Results Study 2: Personality Change Through Self-Improvement or Self-Acceptance
Author
[blinded]
1 Load packages
Show the code
library(renv)library(tidyverse)library(broom)library(labelled)library(psych)library(GPArotation)#library(devtools)#install_github("cran/multicon") # not on CRAN atmlibrary(multicon)library(correlation)library(careless)library(corrplot)library(lavaan)library(semTools)library(semPlot)library(knitr)library(ggdist)library(ggforce)library(cowplot)library(nortest)library(lmerTest)library(effectsize)library(wordcloud) # these 3 for the word cloudslibrary(RColorBrewer)library(tm)
2 Data cleaning
Show the code
# source("clean_data_st2.R") # for data protection reasons, we provide the cleaned data sets here where potentially sensitive variables were dropped (see "clean_data_st2.R" for details)base::load("data/df_sbsa2.rda")
This is only relevant for the facet-level models. All trait-level models rely on the parcels created above. However, the facet-level models pick the first item as the anchor indicator which is sometimes reverse-keyed for the latent factor. For analyses below I want to use just positively keyed variables (for neuroticism facets higher values should indicate higher neuroticism).
# save all relevant variable namesnames_rev_scored <- df_sbsa2_wide_pers %>%select(ends_with("_r")) %>%colnames()names_rev_scored_orig <-gsub("_r", "", names_rev_scored) # variable names without the "_r" -> these are the original variables# drop original variablesdf_sbsa2_wide_pers <- df_sbsa2_wide_pers %>%select(-all_of(names_rev_scored_orig))# recreate original variable names -> these are the recoded variables now!df_sbsa2_wide_pers <- df_sbsa2_wide_pers %>%rename_with(~gsub("_r", "", .x))
4 Measurement invariance
4.1 Well-being outcomes
Testing for measurement invariance of the latent traits across time. Only doing this for the two (original) intervention groups for now, not for the waitlist control group, because they had different intervention schedules and our main focus lies on testing changes in the intervention groups.
4.1.1 Life satisfaction
Satisfaction with life scale (only the first four items - last one taps into a somewhat different construct)
Good model fit across all model specifications (except for RMSEA). Chi^2 tests indicate that strong measurement invariance is given (very close to .05).
4.2 Big Five: from T1 to T2
Testing for measurement invariance of the latent BFI-2 traits across time, from T1 to T2.
4.2.1 Extraversion: current-personality (from T1 to T2)
Very good model fit across all stages of measurement invariance. Chi^2 tests indicate that the test for weak measurement invariance is (barely) violated. Tests for strong and strict measurement invariance hold up, though. Probably ok to proceed, anyways.
4.2.9 Openness: current-personality (from T1 to T2)
Model fit not satisfactory across all stages of measurement invariance. Chi^2 tests indicate that the test for weak measurement invariance is just about violated at (very close to .05, though). Otherwise, strong measurement invariance is given. Probably ok to proceed!
4.3 Big Five: from T2 to T3
Testing for measurement invariance of the latent BFI-2 traits across time, from T2 to T3.
4.3.1 Extraversion: current-personality (from T2 to T3)
# across all participants: ethnicitydf_sbsa2 %>%group_by(pid) %>%slice_head(n=1) %>%ungroup() %>%group_by(ethnicity) %>%summarise(n =n()) %>%ungroup() %>%arrange(desc(n)) %>%mutate(prop =round(n /sum(n) *100, 3))
# A tibble: 6 × 3
ethnicity n prop
<chr> <int> <dbl>
1 White 553 65.1
2 Black 207 24.4
3 Mixed 38 4.48
4 Asian 28 3.30
5 Other 20 2.36
6 <NA> 3 0.353
# across all participants: country of residencedf_sbsa2 %>%group_by(pid) %>%slice_head(n=1) %>%ungroup() %>%group_by(country) %>%summarise(n =n()) %>%ungroup() %>%arrange(desc(n)) %>%mutate(prop =round(n /sum(n) *100, 3)) %>%print(n=20)
# A tibble: 30 × 3
country n prop
<chr> <int> <dbl>
1 South Africa 236 27.8
2 Poland 119 14.0
3 Portugal 119 14.0
4 United Kingdom 96 11.3
5 Italy 73 8.60
6 Spain 46 5.42
7 Mexico 27 3.18
8 Greece 25 2.94
9 Hungary 18 2.12
10 Canada 17 2.00
11 Netherlands 10 1.18
12 France 9 1.06
13 Ireland 7 0.824
14 Czech Republic 6 0.707
15 Israel 5 0.589
16 United States 5 0.589
17 Australia 4 0.471
18 Chile 4 0.471
19 Estonia 4 0.471
20 Slovenia 4 0.471
# ℹ 10 more rows
# across all participants: student statusdf_sbsa2 %>%group_by(pid) %>%slice_head(n=1) %>%ungroup() %>%group_by(student) %>%summarise(n =n()) %>%ungroup() %>%arrange(desc(n)) %>%mutate(prop =round(n /sum(n) *100, 3))
# A tibble: 3 × 3
student n prop
<chr> <int> <dbl>
1 No 425 50.1
2 Yes 314 37.0
3 <NA> 110 13.0
# across all participants: employment statusdf_sbsa2 %>%group_by(pid) %>%slice_head(n=1) %>%ungroup() %>%group_by(employed) %>%summarise(n =n()) %>%ungroup() %>%arrange(desc(n)) %>%mutate(prop =round(n /sum(n) *100, 3))
# A tibble: 7 × 3
employed n prop
<chr> <int> <dbl>
1 Full-Time 385 45.3
2 Part-Time 123 14.5
3 Unemployed (and job seeking) 122 14.4
4 <NA> 121 14.3
5 Other 62 7.30
6 Not in paid work (e.g. homemaker', 'retired or disabled) 28 3.30
7 Due to start a new job within the next month 8 0.942
5.3 Internal consistencies
On the trait/dimensional level:
# created in study 2 cleaning script base::load("data/int_consist_traits_st2.rda")kable(int_consist_traits_st2, digits =3)
trait
rel_alpha_current
rel_alpha_ideal
rel_omega_t_current
rel_omega_t_ideal
rel_omega_h_current
rel_omega_h_ideal
lifesat
0.881
NA
0.897
NA
0.794
NA
meaning
0.881
NA
0.944
NA
0.558
NA
selfes
0.908
NA
0.925
NA
0.718
NA
concept
0.902
NA
0.919
NA
0.848
NA
extra
0.835
0.697
0.872
0.746
0.651
0.512
agree
0.779
0.775
0.836
0.830
0.521
0.654
consc
0.878
0.813
0.903
0.854
0.699
0.692
neuro
0.901
0.781
0.918
0.828
0.771
0.692
openn
0.814
0.769
0.856
0.826
0.618
0.579
McDonald’s omega only really makes sense for the Big Five dimensions (with their three facets each) but I’ve added it for the well-being measures as well. Keep in mind that a few of the omega computations for the well-being measures only converged with error messages. These constructs were not neccessarily intended to be tested in this multidimensional manner for internal consistency.
On the facet level:
# created in study 2 cleaning script base::load("data/int_consist_facets_st2.rda")kable(int_consist_facets_st2, digits =3)
facet
rel_alpha_current
rel_alpha_ideal
socia
0.821
0.599
asser
0.716
0.514
energ
0.680
0.486
compa
0.529
0.459
respe
0.682
0.657
trust
0.656
0.632
organ
0.823
0.581
produ
0.774
0.690
respo
0.689
0.592
anxie
0.757
0.439
depre
0.813
0.606
volat
0.816
0.680
curio
0.657
0.592
aesth
0.672
0.526
imagi
0.718
0.580
5.4 General change/acceptance goals
Summary stats:
table(df_sbsa2$sb06_01) # How much do you want to change your personality in general?
1 2 3 4 5
34 81 179 89 27
summary(df_sbsa2$sb06_01)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
1.000 2.000 3.000 2.985 4.000 5.000 1801
table(df_sbsa2$sa06_01) # How much do you want to be better at accepting yourself for who you are?
1 2 3 4 5
9 12 65 121 203
summary(df_sbsa2$sa06_01)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
1.000 4.000 4.000 4.212 5.000 5.000 1801
Pre:
Here is a list of 15 personality traits. You might be high or low on any of these traits. Regardless of how high or low you are on these traits, we want to know how much you [want to] change. Please rate how much you would like to change your level of each of these traits, where 1 = I do not want to change and 5 = I want to change a lot.
Post:
Here is a list of 15 personality traits. During the study, you may have tried to change in some of these traits. We want to know how you think you changed in each trait. Please rate how much you changed your level of each of these traits during this study, where 1 = I am completely the same and 5 = I have changed a lot.
Self Acceptance
Pre:
Here is a list of 15 personality traits. You might be high or low on any of these traits. Regardless of how high or low you are on these traits, we want to know how much you accept yourself. Please rate how much you accept your level of each of these traits, where 1 = I completely accept myself and 5 = I want to accept myself more.
Post:
Here is a list of 15 personality traits. During the study, you may have tried to accept your level on some of these traits more. We want to know how much you think you accept yourself more because of this study. Please rate how much you accept your level of each of these traits more during this study, where 1 = I accept myself the same and 5 = I accept this about myself much more.
# A tibble: 5 × 6
term estimate std.error statistic p.value outcome
<chr> <dbl> <dbl> <dbl> <dbl> <chr>
1 remained 0.230 0.0802 2.86 0.00431 respo_comb_curr
2 remained 0.209 0.0942 2.22 0.0267 organ_comb_curr
3 remained 0.188 0.0727 2.59 0.00972 consc_comb_curr
4 remained 0.171 0.0837 2.04 0.0415 aesth_comb_curr
5 remained 0.140 0.0699 2.00 0.0458 respe_comb_curr
effectsize::cohens_d(respo_comb_curr ~ remained, data = attrition_sample_1)
Cohen's d | 95% CI
--------------------------
-0.28 | [-0.47, -0.09]
- Estimated using pooled SD.
effectsize::cohens_d(organ_comb_curr ~ remained, data = attrition_sample_1)
Cohen's d | 95% CI
--------------------------
-0.22 | [-0.41, -0.02]
- Estimated using pooled SD.
effectsize::cohens_d(consc_comb_curr ~ remained, data = attrition_sample_1)
Cohen's d | 95% CI
--------------------------
-0.25 | [-0.44, -0.06]
- Estimated using pooled SD.
effectsize::cohens_d(aesth_comb_curr ~ remained, data = attrition_sample_1)
Cohen's d | 95% CI
--------------------------
-0.20 | [-0.39, -0.01]
- Estimated using pooled SD.
effectsize::cohens_d(respe_comb_curr ~ remained, data = attrition_sample_1)
Cohen's d | 95% CI
--------------------------
-0.19 | [-0.38, 0.00]
- Estimated using pooled SD.
Participants who dropped out at T2 were less responsible, d = -0.28, 95% CI [-0.47; -0.09], p = .004, less organized, d = -0.22, 95% CI [-0.41; -0.02], p = .021, less conscientious, d = -0.25, 95% CI [-0.44; -0.06], p = .010, less aesthetically oriented, d = -0.20, 95% CI [-0.39; -0.01], p = .042, and less respectful, d = -0.19, 95% CI [-0.38; -0.001], p = .046. In addition, participants who dropped out at T3 were younger, d = -0.27, 95% CI [-0.49; -0.04], p = .019, less organized, d = -0.27, 95% CI [-0.50; -0.05], p = .017, and less conscientious, d = -0.25, 95% CI [-0.47; -0.02], p = .031, and also rated their ideal personality as less conscientious, d = -0.31, 95% CI [-0.53; -0.08], p = .007, less organized, d = -0.36, 95% CI [-0.58; -0.13], p = .002, less productive, d = -0.28, 95% CI [-0.50; -0.05], p = .015, and less imaginative, d = -0.24, 95% CI [-0.47; -0.02], p = .035.
6.1 H1: Well-being - similarity correlations (H4 in paper)
All four psychological well-being indicators will be positively correlated with a greater similarity between current- and ideal personality-ratings of personality.
To examine this at the level of overall profiles, we will compute the correlations between the psychological well-being indicators and the Fisher z transformed correlations between the facet- and item-level real-ideal personality-profiles. To examine this at the level of individual traits, we will compute the correlation between psychological well-being indicators and the squared difference between current- and ideal-personality rating for each Big Five trait and facet.
6.1.1 Profile similarity
Only in the intervention groups (without the waitlist control group).
corrplot(cormat_profile, type ="lower", order ="original", tl.col ="black", tl.srt =10,addCoef.col ='black', number.cex =0.7, diag =FALSE) # also add numbers
Positive correlations of well-being indicators with profile similarity between current personality and ideal personality personality. Especially high correlation with self-esteem. High congruence of item-level and facet-level profile similarity.
As a table with confidence intervals - profile similarity:
corrplot(cormat_sqtraits, type ="lower", order ="original", tl.col ="black", tl.srt =10,addCoef.col ='black', number.cex =0.7, diag =FALSE) # also add numbers
As a table with confidence intervals - squared differences:
Show the code
cormat_sqtraits[c(5:9), c(1:4)] %>%as_tibble() %>%mutate(personality =names(b5_vars)[1:5]) %>%rename(swls =`Life Satisfaction`, meaning =`Meaning in Life`, selfes =`Self-Esteem`, concept =`Self Concept Clarity`) %>%pivot_longer(1:4, names_to ="wellbeing", values_to ="corr") %>%mutate(CI_low = correlation::cor_to_ci(corr, n = (df_sbsa2 %>%filter(!is.na(swls) & rando!="Waitlist-Control") %>%tally() %>%pull()), ci =0.999) %>%as_tibble() %>%pull(CI_low),CI_high = correlation::cor_to_ci(corr, n = (df_sbsa2 %>%filter(!is.na(swls) & rando!="Waitlist-Control") %>%tally() %>%pull()), ci =0.999) %>%as_tibble() %>%pull(CI_high),p = correlation::cor_to_p(corr, n = (df_sbsa2 %>%filter(!is.na(swls) & rando!="Waitlist-Control") %>%tally() %>%pull())) %>%as_tibble() %>%pull(p)) %>%kable(digits =3)
personality
wellbeing
corr
CI_low
CI_high
p
extraversion
swls
-0.394
-0.458
-0.326
0
extraversion
meaning
-0.375
-0.440
-0.305
0
extraversion
selfes
-0.445
-0.506
-0.380
0
extraversion
concept
-0.321
-0.389
-0.249
0
agreeableness
swls
-0.162
-0.237
-0.085
0
agreeableness
meaning
-0.157
-0.233
-0.080
0
agreeableness
selfes
-0.241
-0.314
-0.166
0
agreeableness
concept
-0.241
-0.313
-0.166
0
conscientiousness
swls
-0.312
-0.381
-0.240
0
conscientiousness
meaning
-0.257
-0.329
-0.183
0
conscientiousness
selfes
-0.364
-0.430
-0.294
0
conscientiousness
concept
-0.314
-0.383
-0.241
0
neuroticism
swls
-0.372
-0.438
-0.303
0
neuroticism
meaning
-0.372
-0.438
-0.303
0
neuroticism
selfes
-0.526
-0.581
-0.467
0
neuroticism
concept
-0.425
-0.487
-0.359
0
openness
swls
-0.106
-0.183
-0.028
0
openness
meaning
-0.121
-0.197
-0.043
0
openness
selfes
-0.185
-0.260
-0.109
0
openness
concept
-0.128
-0.204
-0.050
0
Big Five facets
corrplot(cormat_sqfacets, type ="lower", order ="original", tl.col ="black", tl.srt =10,addCoef.col ='black', number.cex =0.6, diag =FALSE) # also add numbers
Here we see negative correlations of well-being indicators with squared trait- and facet-level mean-score differences between current personality and ideal personality personality. Especially pronounced negative correlations for neuroticism, extraversion, and conscientiousness (in that order). On the facet-level, we see that depression is the facet with the highest correlation of its squared difference with well-being, followed by energy. Within conscientiousness, productiveness has the strongest correlation.
6.1.2.1 Change in this relation over time and across intervention groups
corrplot(cormat_sqtraits_sb_t1, type ="lower", order ="original", tl.col ="black", tl.srt =10,addCoef.col ='black', number.cex =0.7, diag =FALSE) # also add numbers
First assessment: Self-acceptance group
corrplot(cormat_sqtraits_sa_t1, type ="lower", order ="original", tl.col ="black", tl.srt =10,addCoef.col ='black', number.cex =0.7, diag =FALSE) # also add numbers
High similarity at T1.
T2
Second assessment: Self-improvement group
corrplot(cormat_sqtraits_sb_t2, type ="lower", order ="original", tl.col ="black", tl.srt =10,addCoef.col ='black', number.cex =0.7, diag =FALSE) # also add numbers
Second assessment: Self-acceptance group
corrplot(cormat_sqtraits_sa_t2, type ="lower", order ="original", tl.col ="black", tl.srt =10,addCoef.col ='black', number.cex =0.7, diag =FALSE) # also add numbers
At T2, attenuated correlations for agreeableness and (to a lesser degree) conscientiousness in the self-improvement group compared to T1.
T3
Third assessment: Self-improvement group
corrplot(cormat_sqtraits_sb_t3, type ="lower", order ="original", tl.col ="black", tl.srt =10,addCoef.col ='black', number.cex =0.7, diag =FALSE) # also add numbers
Third assessment: Self-acceptance group
corrplot(cormat_sqtraits_sa_t3, type ="lower", order ="original", tl.col ="black", tl.srt =10,addCoef.col ='black', number.cex =0.7, diag =FALSE) # also add numbers
At T3, slightly lower correlations for neuroticism in the self-acceptance group (compared to the self-improvement group). But only small difference.
6.1.2.2 Exploratory: Controlling for initial trait levels
Additional, exploratory analysis: Are the relationships of the squared trait differences with well-being similar when we control for initial trait levels (at T1)?
# basic model to replicate the correlationmod_ex_1 <-lm(swls ~ extra_sqdiff, data = df_sbsa2 %>%filter(rando!="Waitlist-Control"& time==1))summary(mod_ex_1)$coef
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.0767166 0.04770753 64.49122 8.286778e-290
extra_sqdiff -0.1877679 0.01767740 -10.62192 1.821543e-24
Does the relationship between the squared difference in one trait (current vs. ideal) and well-being aspects still hold if we control for the initial trait level?
Effects mostly still significant but not always at the p < .001 level. Correlation is especially stongly reduced for neuroticism and its facets depression and anxiety. Effects are still relatively pronounced for extraversion (strongest for sociability) and conscientiousness (strongest for responsibility). Volatility facet from neuroticism also shows comparatively strong effects.
Does the relationship between the squared difference in one trait (current vs. ideal) and well-being aspects still hold if we control for the initial trait level?
Almost all effects significant at the p < .001 level when we include all time points at once. Somewhat stronger effects for neuroticism and extraversion.
6.2 H2: Well-being - latent change (H5 in paper)
Both intervention groups (but not the control group between T1 and T2) will increase in all four psychological well-being indicators.
We will test the mean-level difference between baseline and follow up using latent change models. Our main focus will be changes from T1 to T2 and we will check in a second set of models whether any changes persist from T2 to T3.
6.2.1 Intervention effects (changes from T1 to T2)
6.2.1.1 Life satisfaction
Fit model:
Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007# Fit the multiple indicator Univariate Latent Change Score modelmi_lcs_swls_hyp2 <-'swls_t1 =~ 1*sw06_01_t1 + lamb2*sw06_02_t1 + lamb3*sw06_03_t1 + lamb4*sw06_04_t1 # This specifies the measurement model for swls_t1 swls_t2 =~ 1*sw06_01_t2 + lamb2*sw06_02_t2 + lamb3*sw06_03_t2 + lamb4*sw06_04_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadingsswls_t2 ~ 1*swls_t1 # This parameter regresses swls_t2 perfectly on swls_t1d_swls_1 =~ 1*swls_t2 # This defines the latent change score factor as measured perfectly by scores on swls_t2swls_t2 ~ 0*1 # This line constrains the intercept of swls_t2 to 0swls_t2 ~~ 0*swls_t2 # This fixes the variance of swls_t2 to 0d_swls_1 ~ 1 # This estimates the intercept of the change score swls_t1 ~ 1 # This estimates the intercept of swls_t1 d_swls_1 ~~ d_swls_1 # This estimates the variance of the change scores swls_t1 ~~ swls_t1 # This estimates the variance of the swls_t1 swls_t1 ~~ d_swls_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalsw06_01_t1 ~~ sw06_01_t2 # This allows residual covariance on indicator X1 across T1 and T2sw06_02_t1 ~~ sw06_02_t2 # This allows residual covariance on indicator X2 across T1 and T2sw06_03_t1 ~~ sw06_03_t2 # This allows residual covariance on indicator X3 across T1 and T2sw06_04_t1 ~~ sw06_04_t2 # This allows residual covariance on indicator X4 across T1 and T2sw06_01_t1 ~~ res1*sw06_01_t1 # This allows residual variance on indicator X1 at T1 sw06_02_t1 ~~ res2*sw06_02_t1 # This allows residual variance on indicator X2 at T1sw06_03_t1 ~~ res3*sw06_03_t1 # This allows residual variance on indicator X3 at T1sw06_04_t1 ~~ res4*sw06_04_t1 # This allows residual variance on indicator X4 at T1sw06_01_t2 ~~ res1*sw06_01_t2 # This allows residual variance on indicator X1 at T2 sw06_02_t2 ~~ res2*sw06_02_t2 # This allows residual variance on indicator X2 at T2 sw06_03_t2 ~~ res3*sw06_03_t2 # This allows residual variance on indicator X3 at T2sw06_04_t2 ~~ res4*sw06_04_t2 # This allows residual variance on indicator X4 at T2sw06_01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1sw06_02_t1 ~ m2*1 # This estimates the intercept of X2 at T1sw06_03_t1 ~ m3*1 # This estimates the intercept of X3 at T1sw06_04_t1 ~ m4*1 # This estimates the intercept of X4 at T1sw06_01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2sw06_02_t2 ~ m2*1 # This estimates the intercept of X2 at T2sw06_03_t2 ~ m3*1 # This estimates the intercept of X3 at T2sw06_04_t2 ~ m4*1 # This estimates the intercept of X4 at T2'fit_mi_lcs_swls_hyp2 <-lavaan(mi_lcs_swls_hyp2, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_swls_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Significantly higher life satisfaction at the post test, b = 0.271, beta = 0.273, p = 0. Those with initially higher levels of life satisfaction (at T1) change to a lesser degree.
What happens in the waitlist control group during this time?
Life satisfaction changes in the control group significantly at positively (at p < .001), b = 0.251, beta = 0.252, p = 0. Slightly weaker effect size than in intervention group.
6.2.1.2 Meaning in life
Fit model:
Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007# Fit the multiple indicator Univariate Latent Change Score modelmi_lcs_meaning_hyp2 <-'meaning_t1 =~ 1*meaning_par1_t1 + lamb2*meaning_par2_t1 + lamb3*meaning_par3_t1 # This specifies the measurement model for meaning_t1 meaning_t2 =~ 1*meaning_par1_t2 + lamb2*meaning_par2_t2 + lamb3*meaning_par3_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadingsmeaning_t2 ~ 1*meaning_t1 # This parameter regresses meaning_t2 perfectly on meaning_t1d_meaning_1 =~ 1*meaning_t2 # This defines the latent change score factor as measured perfectly by scores on meaning_t2meaning_t2 ~ 0*1 # This line constrains the intercept of meaning_t2 to 0meaning_t2 ~~ 0*meaning_t2 # This fixes the variance of meaning_t2 to 0d_meaning_1 ~ 1 # This estimates the intercept of the change score meaning_t1 ~ 1 # This estimates the intercept of meaning_t1 d_meaning_1 ~~ d_meaning_1 # This estimates the variance of the change scores meaning_t1 ~~ meaning_t1 # This estimates the variance of the meaning_t1 meaning_t1 ~~ d_meaning_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalmeaning_par1_t1 ~~ meaning_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2meaning_par2_t1 ~~ meaning_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2meaning_par3_t1 ~~ meaning_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2meaning_par1_t1 ~~ res1*meaning_par1_t1 # This allows residual variance on indicator X1 at T1 meaning_par2_t1 ~~ res2*meaning_par2_t1 # This allows residual variance on indicator X2 at T1meaning_par3_t1 ~~ res3*meaning_par3_t1 # This allows residual variance on indicator X3 at T1meaning_par1_t2 ~~ res1*meaning_par1_t2 # This allows residual variance on indicator X1 at T2 meaning_par2_t2 ~~ res2*meaning_par2_t2 # This allows residual variance on indicator X2 at T2 meaning_par3_t2 ~~ res3*meaning_par3_t2 # This allows residual variance on indicator X3 at T2meaning_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1meaning_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1meaning_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1meaning_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2meaning_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2meaning_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2'fit_mi_lcs_meaning_hyp2 <-lavaan(mi_lcs_meaning_hyp2, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_meaning_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Meaning increases significantly in the control group, b = 0.292, beta = 0.251, p = 0, with an even stronger effect size than in the intervention groups.
6.2.1.3 Self-esteem
Fit model:
Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007# Fit the multiple indicator Univariate Latent Change Score modelmi_lcs_selfes_hyp2 <-'selfes_t1 =~ 1*selfes_par1_t1 + lamb2*selfes_par2_t1 + lamb3*selfes_par3_t1 # This specifies the measurement model for selfes_t1 selfes_t2 =~ 1*selfes_par1_t2 + lamb2*selfes_par2_t2 + lamb3*selfes_par3_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadingsselfes_t2 ~ 1*selfes_t1 # This parameter regresses selfes_t2 perfectly on selfes_t1d_selfes_1 =~ 1*selfes_t2 # This defines the latent change score factor as measured perfectly by scores on selfes_t2selfes_t2 ~ 0*1 # This line constrains the intercept of selfes_t2 to 0selfes_t2 ~~ 0*selfes_t2 # This fixes the variance of selfes_t2 to 0d_selfes_1 ~ 1 # This estimates the intercept of the change score selfes_t1 ~ 1 # This estimates the intercept of selfes_t1 d_selfes_1 ~~ d_selfes_1 # This estimates the variance of the change scores selfes_t1 ~~ selfes_t1 # This estimates the variance of the selfes_t1 selfes_t1 ~~ d_selfes_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalselfes_par1_t1 ~~ selfes_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2selfes_par2_t1 ~~ selfes_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2selfes_par3_t1 ~~ selfes_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2selfes_par1_t1 ~~ res1*selfes_par1_t1 # This allows residual variance on indicator X1 at T1 selfes_par2_t1 ~~ res2*selfes_par2_t1 # This allows residual variance on indicator X2 at T1selfes_par3_t1 ~~ res3*selfes_par3_t1 # This allows residual variance on indicator X3 at T1selfes_par1_t2 ~~ res1*selfes_par1_t2 # This allows residual variance on indicator X1 at T2 selfes_par2_t2 ~~ res2*selfes_par2_t2 # This allows residual variance on indicator X2 at T2 selfes_par3_t2 ~~ res3*selfes_par3_t2 # This allows residual variance on indicator X3 at T2selfes_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1selfes_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1selfes_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1selfes_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2selfes_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2selfes_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2'fit_mi_lcs_selfes_hyp2 <-lavaan(mi_lcs_selfes_hyp2, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_selfes_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Self-esteem changes significantly and positively in the control group, b = 0.187, beta = 0.213, p = 0. Comparable effect size to the intervention groups.
6.2.1.4 Self concept clarity
Fit model:
Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007# Fit the multiple indicator Univariate Latent Change Score modelmi_lcs_concept_hyp2 <-'concept_t1 =~ 1*concept_par1_t1 + lamb2*concept_par2_t1 + lamb3*concept_par3_t1 # This specifies the measurement model for concept_t1 concept_t2 =~ 1*concept_par1_t2 + lamb2*concept_par2_t2 + lamb3*concept_par3_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadingsconcept_t2 ~ 1*concept_t1 # This parameter regresses concept_t2 perfectly on concept_t1d_concept_1 =~ 1*concept_t2 # This defines the latent change score factor as measured perfectly by scores on concept_t2concept_t2 ~ 0*1 # This line constrains the intercept of concept_t2 to 0concept_t2 ~~ 0*concept_t2 # This fixes the variance of concept_t2 to 0d_concept_1 ~ 1 # This estimates the intercept of the change score concept_t1 ~ 1 # This estimates the intercept of concept_t1 d_concept_1 ~~ d_concept_1 # This estimates the variance of the change scores concept_t1 ~~ concept_t1 # This estimates the variance of the concept_t1 concept_t1 ~~ d_concept_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalconcept_par1_t1 ~~ concept_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2concept_par2_t1 ~~ concept_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2concept_par3_t1 ~~ concept_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2concept_par1_t1 ~~ res1*concept_par1_t1 # This allows residual variance on indicator X1 at T1 concept_par2_t1 ~~ res2*concept_par2_t1 # This allows residual variance on indicator X2 at T1concept_par3_t1 ~~ res3*concept_par3_t1 # This allows residual variance on indicator X3 at T1concept_par1_t2 ~~ res1*concept_par1_t2 # This allows residual variance on indicator X1 at T2 concept_par2_t2 ~~ res2*concept_par2_t2 # This allows residual variance on indicator X2 at T2 concept_par3_t2 ~~ res3*concept_par3_t2 # This allows residual variance on indicator X3 at T2concept_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1concept_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1concept_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1concept_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2concept_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2concept_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2'fit_mi_lcs_concept_hyp2 <-lavaan(mi_lcs_concept_hyp2, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_concept_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Self concept clarity changes in the control group not significant, b = 0.057, beta = 0.064, p = 0.188. Still a slight positive estimate, but weaker effect size than in intervention group.
6.2.2 Follow-up effects (changes from T2 to T3)
6.2.2.1 Life satisfaction
Fit model:
Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007# Fit the multiple indicator Univariate Latent Change Score modelmi_lcs_swls_hyp2_fu <-'swls_t2 =~ 1*sw06_01_t2 + lamb2*sw06_02_t2 + lamb3*sw06_03_t2 + lamb4*sw06_04_t2 # This specifies the measurement model for swls_t2 swls_t3 =~ 1*sw06_01_t3 + lamb2*sw06_02_t3 + lamb3*sw06_03_t3 + lamb4*sw06_04_t3 # This specifies the measurement model for swls_t3 with the equality constrained factor loadingsswls_t3 ~ 1*swls_t2 # This parameter regresses swls_t3 perfectly on swls_t2d_swls_1 =~ 1*swls_t3 # This defines the latent change score factor as measured perfectly by scores on swls_t3swls_t3 ~ 0*1 # This line constrains the intercept of swls_t3 to 0swls_t3 ~~ 0*swls_t3 # This fixes the variance of swls_t3 to 0d_swls_1 ~ 1 # This estimates the intercept of the change score swls_t2 ~ 1 # This estimates the intercept of swls_t2 d_swls_1 ~~ d_swls_1 # This estimates the variance of the change scores swls_t2 ~~ swls_t2 # This estimates the variance of the swls_t2 swls_t2 ~~ d_swls_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalsw06_01_t2 ~~ sw06_01_t3 # This allows residual covariance on indicator X1 across T1 and T2sw06_02_t2 ~~ sw06_02_t3 # This allows residual covariance on indicator X2 across T1 and T2sw06_03_t2 ~~ sw06_03_t3 # This allows residual covariance on indicator X3 across T1 and T2sw06_04_t2 ~~ sw06_04_t3 # This allows residual covariance on indicator X4 across T1 and T2sw06_01_t2 ~~ res1*sw06_01_t2 # This allows residual variance on indicator X1 at T1 sw06_02_t2 ~~ res2*sw06_02_t2 # This allows residual variance on indicator X2 at T1sw06_03_t2 ~~ res3*sw06_03_t2 # This allows residual variance on indicator X3 at T1sw06_04_t2 ~~ res4*sw06_04_t2 # This allows residual variance on indicator X4 at T1sw06_01_t3 ~~ res1*sw06_01_t3 # This allows residual variance on indicator X1 at T2 sw06_02_t3 ~~ res2*sw06_02_t3 # This allows residual variance on indicator X2 at T2 sw06_03_t3 ~~ res3*sw06_03_t3 # This allows residual variance on indicator X3 at T2sw06_04_t3 ~~ res4*sw06_04_t3 # This allows residual variance on indicator X4 at T2sw06_01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T1sw06_02_t2 ~ m2*1 # This estimates the intercept of X2 at T1sw06_03_t2 ~ m3*1 # This estimates the intercept of X3 at T1sw06_04_t2 ~ m4*1 # This estimates the intercept of X4 at T1sw06_01_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T2sw06_02_t3 ~ m2*1 # This estimates the intercept of X2 at T2sw06_03_t3 ~ m3*1 # This estimates the intercept of X3 at T2sw06_04_t3 ~ m4*1 # This estimates the intercept of X4 at T2'fit_mi_lcs_swls_hyp2_fu <-lavaan(mi_lcs_swls_hyp2_fu, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_swls_hyp2_fu, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Life satisfaction further increased from T2 to the T3 follow up, b = 0.11, beta = 0.111, p = 0.
6.2.2.2 Meaning in life
Fit model:
Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007# Fit the multiple indicator Univariate Latent Change Score modelmi_lcs_meaning_hyp2_fu <-'meaning_t2 =~ 1*meaning_par1_t2 + lamb2*meaning_par2_t2 + lamb3*meaning_par3_t2 # This specifies the measurement model for meaning_t2 meaning_t3 =~ 1*meaning_par1_t3 + lamb2*meaning_par2_t3 + lamb3*meaning_par3_t3 # This specifies the measurement model for meaning_t3 with the equality constrained factor loadingsmeaning_t3 ~ 1*meaning_t2 # This parameter regresses meaning_t3 perfectly on meaning_t2d_meaning_1 =~ 1*meaning_t3 # This defines the latent change score factor as measured perfectly by scores on meaning_t3meaning_t3 ~ 0*1 # This line constrains the intercept of meaning_t3 to 0meaning_t3 ~~ 0*meaning_t3 # This fixes the variance of meaning_t3 to 0d_meaning_1 ~ 1 # This estimates the intercept of the change score meaning_t2 ~ 1 # This estimates the intercept of meaning_t2 d_meaning_1 ~~ d_meaning_1 # This estimates the variance of the change scores meaning_t2 ~~ meaning_t2 # This estimates the variance of the meaning_t2 meaning_t2 ~~ d_meaning_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalmeaning_par1_t2 ~~ meaning_par1_t3 # This allows residual covariance on indicator X1 across T1 and T2meaning_par2_t2 ~~ meaning_par2_t3 # This allows residual covariance on indicator X2 across T1 and T2meaning_par3_t2 ~~ meaning_par3_t3 # This allows residual covariance on indicator X3 across T1 and T2meaning_par1_t2 ~~ res1*meaning_par1_t2 # This allows residual variance on indicator X1 at T1 meaning_par2_t2 ~~ res2*meaning_par2_t2 # This allows residual variance on indicator X2 at T1meaning_par3_t2 ~~ res3*meaning_par3_t2 # This allows residual variance on indicator X3 at T1meaning_par1_t3 ~~ res1*meaning_par1_t3 # This allows residual variance on indicator X1 at T2 meaning_par2_t3 ~~ res2*meaning_par2_t3 # This allows residual variance on indicator X2 at T2 meaning_par3_t3 ~~ res3*meaning_par3_t3 # This allows residual variance on indicator X3 at T2meaning_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T1meaning_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T1meaning_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T1meaning_par1_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T2meaning_par2_t3 ~ m2*1 # This estimates the intercept of X2 at T2meaning_par3_t3 ~ m3*1 # This estimates the intercept of X3 at T2'fit_mi_lcs_meaning_hyp2_fu <-lavaan(mi_lcs_meaning_hyp2_fu, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_meaning_hyp2_fu, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Meaning in life further increased from T2 to the T3 follow up, b = 0.15, beta = 0.129, p = 0.
6.2.2.3 Self-esteem
Fit model:
Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007# Fit the multiple indicator Univariate Latent Change Score modelmi_lcs_selfes_hyp2_fu <-'selfes_t2 =~ 1*selfes_par1_t2 + lamb2*selfes_par2_t2 + lamb3*selfes_par3_t2 # This specifies the measurement model for selfes_t2 selfes_t3 =~ 1*selfes_par1_t3 + lamb2*selfes_par2_t3 + lamb3*selfes_par3_t3 # This specifies the measurement model for selfes_t3 with the equality constrained factor loadingsselfes_t3 ~ 1*selfes_t2 # This parameter regresses selfes_t3 perfectly on selfes_t2d_selfes_1 =~ 1*selfes_t3 # This defines the latent change score factor as measured perfectly by scores on selfes_t3selfes_t3 ~ 0*1 # This line constrains the intercept of selfes_t3 to 0selfes_t3 ~~ 0*selfes_t3 # This fixes the variance of selfes_t3 to 0d_selfes_1 ~ 1 # This estimates the intercept of the change score selfes_t2 ~ 1 # This estimates the intercept of selfes_t2 d_selfes_1 ~~ d_selfes_1 # This estimates the variance of the change scores selfes_t2 ~~ selfes_t2 # This estimates the variance of the selfes_t2 selfes_t2 ~~ d_selfes_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalselfes_par1_t2 ~~ selfes_par1_t3 # This allows residual covariance on indicator X1 across T1 and T2selfes_par2_t2 ~~ selfes_par2_t3 # This allows residual covariance on indicator X2 across T1 and T2selfes_par3_t2 ~~ selfes_par3_t3 # This allows residual covariance on indicator X3 across T1 and T2selfes_par1_t2 ~~ res1*selfes_par1_t2 # This allows residual variance on indicator X1 at T1 selfes_par2_t2 ~~ res2*selfes_par2_t2 # This allows residual variance on indicator X2 at T1selfes_par3_t2 ~~ res3*selfes_par3_t2 # This allows residual variance on indicator X3 at T1selfes_par1_t3 ~~ res1*selfes_par1_t3 # This allows residual variance on indicator X1 at T2 selfes_par2_t3 ~~ res2*selfes_par2_t3 # This allows residual variance on indicator X2 at T2 selfes_par3_t3 ~~ res3*selfes_par3_t3 # This allows residual variance on indicator X3 at T2selfes_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T1selfes_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T1selfes_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T1selfes_par1_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T2selfes_par2_t3 ~ m2*1 # This estimates the intercept of X2 at T2selfes_par3_t3 ~ m3*1 # This estimates the intercept of X3 at T2'fit_mi_lcs_selfes_hyp2_fu <-lavaan(mi_lcs_selfes_hyp2_fu, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_selfes_hyp2_fu, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Self-esteem further increased from T2 to the T3 follow up, b = 0.052, beta = 0.06, p = 0.007.
6.2.2.4 Self concept clarity
Fit model:
Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007# Fit the multiple indicator Univariate Latent Change Score modelmi_lcs_concept_hyp2_fu <-'concept_t2 =~ 1*concept_par1_t2 + lamb2*concept_par2_t2 + lamb3*concept_par3_t2 # This specifies the measurement model for concept_t2 concept_t3 =~ 1*concept_par1_t3 + lamb2*concept_par2_t3 + lamb3*concept_par3_t3 # This specifies the measurement model for concept_t3 with the equality constrained factor loadingsconcept_t3 ~ 1*concept_t2 # This parameter regresses concept_t3 perfectly on concept_t2d_concept_1 =~ 1*concept_t3 # This defines the latent change score factor as measured perfectly by scores on concept_t3concept_t3 ~ 0*1 # This line constrains the intercept of concept_t3 to 0concept_t3 ~~ 0*concept_t3 # This fixes the variance of concept_t3 to 0d_concept_1 ~ 1 # This estimates the intercept of the change score concept_t2 ~ 1 # This estimates the intercept of concept_t2 d_concept_1 ~~ d_concept_1 # This estimates the variance of the change scores concept_t2 ~~ concept_t2 # This estimates the variance of the concept_t2 concept_t2 ~~ d_concept_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalconcept_par1_t2 ~~ concept_par1_t3 # This allows residual covariance on indicator X1 across T1 and T2concept_par2_t2 ~~ concept_par2_t3 # This allows residual covariance on indicator X2 across T1 and T2concept_par3_t2 ~~ concept_par3_t3 # This allows residual covariance on indicator X3 across T1 and T2concept_par1_t2 ~~ res1*concept_par1_t2 # This allows residual variance on indicator X1 at T1 concept_par2_t2 ~~ res2*concept_par2_t2 # This allows residual variance on indicator X2 at T1concept_par3_t2 ~~ res3*concept_par3_t2 # This allows residual variance on indicator X3 at T1concept_par1_t3 ~~ res1*concept_par1_t3 # This allows residual variance on indicator X1 at T2 concept_par2_t3 ~~ res2*concept_par2_t3 # This allows residual variance on indicator X2 at T2 concept_par3_t3 ~~ res3*concept_par3_t3 # This allows residual variance on indicator X3 at T2concept_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T1concept_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T1concept_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T1concept_par1_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T2concept_par2_t3 ~ m2*1 # This estimates the intercept of X2 at T2concept_par3_t3 ~ m3*1 # This estimates the intercept of X3 at T2'fit_mi_lcs_concept_hyp2_fu <-lavaan(mi_lcs_concept_hyp2_fu, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_concept_hyp2_fu, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Self concept clarity further increased from T2 to the T3 follow up, b = 0.043, beta = 0.048, p = 0.033.
I also checked whether there are differences if I model the two intervention groups (self-improvement / self-acceptance) separately. Changes are more or less the same across the two groups.
6.3 H3: Distance between ideal- and current-personality over time (H1 in paper)
The distance between ideal- and current-personality will decrease in both intervention groups (but not in the control group between T1 and T2).
We will use two strategies to test this hypothesis. First, we will compute the Fisher z-transformed profile correlation between current- and ideal-personality and test whether it increased across assessments. Second, we will test whether the squared difference between current- and ideal-personality rating for each Big Five trait decreased across assessments. We will test mean-level differences in profile correlations and squared differences between baseline and follow up using mixed-effects models. Our main focus will be changes from T1 to T2 and we will check in a second set of models whether any changes persist from T2 to T3.
# effect sizesd_profile_corr_item <- psych::cohen.d(profile_corr_item_z ~ time, data = df_sbsa2 %>%filter(rando!="Waitlist-Control"& time %in%c(1,2)))d_profile_corr_item$cohen.d
d_profile_corr_facet <- psych::cohen.d(profile_corr_facet_z ~ time, data = df_sbsa2 %>%filter(rando!="Waitlist-Control"& time %in%c(1,2)))d_profile_corr_facet$cohen.d
Significantly higher profile correlations at the second measurement occasion, both for the item-level profile correlation and the facet-level profile correlations.
What happens in the waitlist control group during this time?
# effect sizesd_profile_corr_item_cg <- psych::cohen.d(profile_corr_item_z ~ time, data = df_sbsa2 %>%filter(rando=="Waitlist-Control"& time %in%c(1,2)))d_profile_corr_item_cg$cohen.d
d_profile_corr_facet_cg <- psych::cohen.d(profile_corr_facet_z ~ time, data = df_sbsa2 %>%filter(rando=="Waitlist-Control"& time %in%c(1,2)))d_profile_corr_facet_cg$cohen.d
Slightly higher higher profile correlations at the second measurement occasion also in the controlg group, although this is only significant at .001 for the item-level profile correlation but not for the facet-level profile correlations.
Testing the difference between intervention groups and control group for significance:
Higher effect size of change in the intervention groups versus the waitlist control group from T1 to T2 but this difference is not significant. Might have something to do though with different group sizes. Note that this is a rather basic method of standardizing multilevel modeling parameters.
# effect sizesd_profile_corr_item_fu <- psych::cohen.d(profile_corr_item_z ~ time, data = df_sbsa2 %>%filter(rando!="Waitlist-Control"& time %in%c(2,3)))d_profile_corr_item_fu$cohen.d
d_profile_corr_facet_fu <- psych::cohen.d(profile_corr_facet_z ~ time, data = df_sbsa2 %>%filter(rando!="Waitlist-Control"& time %in%c(2,3)))d_profile_corr_facet_fu$cohen.d
Profile correlations stay stable from the second measurement occasion to the third when evaluated at alpha=.001, both for the item-level profile correlations and the facet-level profile correlations. Slight increase if looking at effect sizes.
6.3.1.3 Summary plot
profile_df_plot <- df_sbsa2 %>%select(pid, time, rando, profile_corr_item_z, profile_corr_facet_z) %>%pivot_longer(-c(pid, time, rando), names_to ="itemfacet", values_to ="corr") %>%filter(!is.na(corr)) %>%mutate(itemfacet2 =fct_recode(itemfacet, "Item-level"="profile_corr_item_z", "Facet-level"="profile_corr_facet_z"),itemfacet2 =fct_reorder(itemfacet2, corr, .desc = F))cowplot::plot_grid(ggplot(profile_df_plot %>%filter(rando!="Waitlist-Control")) +aes(x =as.factor(time), y = corr) +geom_boxplot() +geom_violin(fill =NA) +facet_wrap(vars(itemfacet2)) +labs(x ="Measurement Occasion", y ="Profile correlation", title ="Intervention groups") +theme_bw(),ggplot(profile_df_plot %>%filter(rando=="Waitlist-Control")) +aes(x =as.factor(time), y = corr) +geom_boxplot() +geom_violin(fill =NA) +facet_wrap(vars(itemfacet2)) +labs(x ="Measurement Occasion", y ="Profile correlation", title ="Waitlist control group") +theme_bw(),ncol =1, align ="vt")
Significantly higher profile correlations at the second measurement occasion, both for the item-level profile correlation and the facet-level profile correlations. Further increases (but only slightly) at the T3 follow-up. However, we also see a pattern of increases in the waitlist control group although with higher uncertainty of estimates (smaller sample). We would not have expected that from T1 to T2, but only from T2 to T3.
6.3.2 Individual traits: squared differences
6.3.2.1 Intervention effects (changes from T1 to T2)
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 576 0.39 0.69 0.11 0.23 0.16 0 6.25 6.25 4.03 22.73 0.03
Results summary:
mod_traits_sqdiff <- df_sbsa2_wide_profdiff %>%filter(rando!="Waitlist-Control") %>%select(-starts_with("profile"), -rando, -ends_with("_t3")) %>%pivot_longer(-c(pid), names_to =c("test", "time"), values_to ="score", names_pattern ="(.*)_(t1|t2)") %>%filter(!is.na(score)) %>%group_by(pid, test) %>%mutate(assessments =n()) %>%ungroup() %>%filter(assessments==2) %>%select(-assessments) %>%group_nest(test) %>%mutate(t_tests =map(data, ~t.test(score ~relevel(as.factor(time), "t2"), # need to relevel this to get T2-T1 diff (not sure why)data = .x, paired =TRUE, conf.level =0.999))) %>%pull(t_tests) %>% purrr::set_names(sort(names(b5_vars))) # ordered alphabeticallymod_traits_unlist <- mod_traits_sqdiff[[1]] %>%tidy()for (i in2:length(mod_traits_sqdiff)) { mod_traits_unlist <-bind_rows(mod_traits_unlist, mod_traits_sqdiff[[i]] %>%tidy())}kable(mod_traits_unlist %>%mutate(outcome =sort(names(b5_vars))) %>%select(outcome, everything()) %>%arrange(factor(outcome, levels = (names(b5_vars)))), digits =3) # order by BFI traits
outcome
estimate
statistic
p.value
parameter
conf.low
conf.high
method
alternative
extraversion
-0.372
-6.354
0.000
576
-0.566
-0.178
Paired t-test
two.sided
agreeableness
-0.097
-3.536
0.000
575
-0.188
-0.006
Paired t-test
two.sided
conscientiousness
-0.169
-2.890
0.004
576
-0.363
0.024
Paired t-test
two.sided
neuroticism
-0.697
-6.865
0.000
576
-1.033
-0.361
Paired t-test
two.sided
openness
-0.076
-2.587
0.010
574
-0.173
0.021
Paired t-test
two.sided
sociability
-0.782
-7.573
0.000
574
-1.124
-0.441
Paired t-test
two.sided
assertiveness
-0.239
-3.030
0.003
573
-0.500
0.022
Paired t-test
two.sided
energy
-0.337
-3.541
0.000
575
-0.651
-0.022
Paired t-test
two.sided
compassion
-0.118
-2.769
0.006
575
-0.258
0.023
Paired t-test
two.sided
respectfulness
-0.012
-0.321
0.749
572
-0.136
0.112
Paired t-test
two.sided
trust
-0.329
-4.856
0.000
574
-0.553
-0.105
Paired t-test
two.sided
organization
-0.149
-1.777
0.076
575
-0.427
0.129
Paired t-test
two.sided
productiveness
-0.453
-4.519
0.000
572
-0.784
-0.121
Paired t-test
two.sided
responsibility
-0.139
-2.065
0.039
573
-0.361
0.083
Paired t-test
two.sided
anxiety
-0.681
-4.592
0.000
576
-1.171
-0.190
Paired t-test
two.sided
depression
-0.887
-7.570
0.000
574
-1.275
-0.500
Paired t-test
two.sided
volatility
-0.603
-4.782
0.000
576
-1.020
-0.186
Paired t-test
two.sided
curiosity
-0.044
-1.039
0.299
573
-0.186
0.097
Paired t-test
two.sided
aesthetic
-0.053
-1.359
0.175
572
-0.183
0.076
Paired t-test
two.sided
imagination
-0.215
-3.559
0.000
574
-0.415
-0.015
Paired t-test
two.sided
# effect sizescohend_cust =function(outcome, df) { form =as.formula(paste0(outcome, " ~ time")) psych::cohen.d(form, data = df, alpha =0.001)}d_trait <-cohend_cust(paste0(str_trunc(names(b5_vars)[1], 5, ellipsis =""), "_sqdiff"), df_sbsa2 %>%filter(rando!="Waitlist-Control"& time %in%c(1,2)))d_traits_unlist <-as_tibble(d_trait$cohen.d)for (i in2:length(names(b5_vars))) { d_trait <-cohend_cust(paste0(str_trunc(names(b5_vars)[i], 5, ellipsis =""), "_sqdiff"), df_sbsa2 %>%filter(rando!="Waitlist-Control"& time %in%c(1,2))) d_traits_unlist <-bind_rows(d_traits_unlist, as_tibble(d_trait$cohen.d))}kable(d_traits_unlist %>%mutate(outcome =names(b5_vars)) %>%select(outcome, everything()), digits =3)
outcome
lower
effect
upper
extraversion
-0.386
-0.199
-0.012
agreeableness
-0.322
-0.135
0.051
conscientiousness
-0.311
-0.124
0.063
neuroticism
-0.404
-0.217
-0.030
openness
-0.288
-0.101
0.086
sociability
-0.421
-0.233
-0.046
assertiveness
-0.295
-0.108
0.079
energy
-0.344
-0.157
0.030
compassion
-0.306
-0.120
0.067
respectfulness
-0.249
-0.062
0.125
trust
-0.378
-0.191
-0.004
organization
-0.278
-0.091
0.096
productiveness
-0.362
-0.174
0.013
responsibility
-0.299
-0.112
0.075
anxiety
-0.347
-0.160
0.027
depression
-0.427
-0.240
-0.052
volatility
-0.359
-0.172
0.015
curiosity
-0.236
-0.049
0.137
aesthetic
-0.253
-0.066
0.121
imagination
-0.311
-0.124
0.063
[Note: These CIs for d are probably “wrong” -> not appropriate for paired t-test]
Significantly lower squared mean-level differences at the second measurement occasion for extraversion, agreeableness, and neuroticism (at .001). For conscientiousness and openness only at p < .01. On the level of the 15 BFI-2 facets, we find 8 significant effects (at .001) where squared mean-level differences were reduced. For example, pronounced effect for energy but no effect for assertiveness.
What happens in the waitlist control group during this time?
mod_traits_sqdiff_cg <- df_sbsa2_wide_profdiff %>%filter(rando=="Waitlist-Control") %>%select(-starts_with("profile"), -rando, -ends_with("_t3")) %>%pivot_longer(-c(pid), names_to =c("test", "time"), values_to ="score", names_pattern ="(.*)_(t1|t2)") %>%filter(!is.na(score)) %>%group_by(pid, test) %>%mutate(assessments =n()) %>%ungroup() %>%filter(assessments==2) %>%select(-assessments) %>%group_nest(test) %>%mutate(t_tests =map(data, ~t.test(score ~relevel(as.factor(time), "t2"), # need to relevel this to get T2-T1 diff (not sure why)data = .x, paired =TRUE, conf.level =0.999))) %>%pull(t_tests) %>% purrr::set_names(sort(names(b5_vars))) # ordered alphabeticallymod_traits_unlist_cg <- mod_traits_sqdiff_cg[[1]] %>%tidy()for (i in2:length(mod_traits_sqdiff_cg)) { mod_traits_unlist_cg <-bind_rows(mod_traits_unlist_cg, mod_traits_sqdiff_cg[[i]] %>%tidy())}kable(mod_traits_unlist_cg %>%mutate(outcome =sort(names(b5_vars))) %>%select(outcome, everything()) %>%arrange(factor(outcome, levels = (names(b5_vars)))), digits =3) # order by BFI traits
In the control group, significantly lower squared mean-level differences at the second measurement occasion only for facet organization (at .001). For extraversion, agreeableness, conscientiousness, and neuroticism only at p < .05 (as well as for 8 facets). However, in terms of effect sizes, relatively similar effects to intervention group.
No significant further changes in the squared difference from the second to the third measurement occasion (at .001). For neuroticism (and anxiety) further decreases only at p < .01.
6.3.2.3 Summary plot
Traits/facets sorted by average size of squared differences - in the intervention groups from T1 to T2
6.4 H4: Change goals and change in personality (current / ideal) in self-improvement group
Not specifically preregistered for study 2 because we were foremost interested in the moderation hypothesis (H6 in prereg / H2 in paper) and thought that it was somewhat redundant with these models of correlations with the change score. I still ran the models for study 2 here (without the control group and for changes between T1 and T2) in case the comparison with study 1 is of interest.
In the self-improvement group, there will be a correlation between change goals and change in current-personality ratings but not change in ideal-personality ratings.
We will test this one domain/facet at a time. We will use both general continuous change goal score as well as trait-specific change goals. To test this hypothesis, we will estimate the mean-level differences across time for both current and ideal trait ratings using latent change models and correlate change goals with the change variable from those models.
Reshape and split data set by intervention group:
Show the code
# from T1 to T2df_sbsa2_wide_pers_sb <- df_sbsa2 %>%filter(rando=="Self-Improvement"& time %in%c(1,2)) %>%arrange(pid, time) %>%select(pid, time, starts_with(c("sb07")), # facet-specific change goals sb06_01) %>%# general change goalpivot_wider(names_from = time,names_sep ="_t",values_from =c(starts_with("sb07"), sb06_01)) %>%select(-c(sb07_01_t2, sb07_02_t2, sb07_03_t2, sb07_04_t2, sb07_05_t2, sb07_06_t2, sb07_07_t2, sb07_08_t2, sb07_09_t2, sb07_10_t2, sb07_11_t2, sb07_12_t2, sb07_13_t2, sb07_14_t2, sb07_15_t2, sb06_01_t2))# standardize goal variables (better interpretation for when they are in SEM as a single manifest variable, not so much a problem when they form a latent scale)df_sbsa2_wide_pers_sb <- df_sbsa2_wide_pers_sb %>%mutate_at(c(colnames(df_sbsa2_wide_pers_sb)[-1]), ~(scale(.) %>% as.vector)) # colnames(df_sbsa2_wide_pers_sb)group_assign <- df_sbsa2 %>%select(pid, rando) %>%unique()df_sbsa2_wide_pers_sb <- df_sbsa2_wide_pers %>%left_join(group_assign) %>%filter(rando=="Self-Improvement") %>%select(-rando, -ends_with("_t3")) %>%left_join(df_sbsa2_wide_pers_sb)# follow-up, from T2 to T3 (for later models)df_sbsa2_wide_pers_sb_fu <- df_sbsa2 %>%filter(rando=="Self-Improvement"& time %in%c(2,3)) %>%arrange(pid, time) %>%select(pid, time, starts_with(c("sb07")), # facet-specific change goals sb06_01) %>%# general change goalpivot_wider(names_from = time,names_sep ="_t",values_from =c(starts_with("sb07"), sb06_01)) %>%select(-c(sb07_01_t2, sb07_02_t2, sb07_03_t2, sb07_04_t2, sb07_05_t2, sb07_06_t2, sb07_07_t2, sb07_08_t2, sb07_09_t2, sb07_10_t2, sb07_11_t2, sb07_12_t2, sb07_13_t2, sb07_14_t2, sb07_15_t2, sb06_01_t2))# standardize goal variables (better interpretation for when they are in SEM as a single manifest variable, not so much a problem when they form a latent scale)df_sbsa2_wide_pers_sb_fu <- df_sbsa2_wide_pers_sb_fu %>%mutate_at(c(colnames(df_sbsa2_wide_pers_sb_fu)[-1]), ~(scale(.) %>% as.vector)) # colnames(df_sbsa2_wide_pers_sb_fu)df_sbsa2_wide_pers_sb_fu <- df_sbsa2_wide_pers %>%left_join(group_assign) %>%filter(rando=="Self-Improvement"&!is.na(valid_t2)) %>%select(-rando, -ends_with("_t1")) %>%left_join(df_sbsa2_wide_pers_sb_fu)
6.4.1 Big Five traits
6.4.1.1 Extraversion - current-personality: general change goals
Fit model:
Show the code
# adding correlation with manifest change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_extra_curr_hyp4 <-'extra_t1 =~ 1*extra_curr_par1_t1 + lamb2*extra_curr_par2_t1 + lamb3*extra_curr_par3_t1 # This specifies the measurement model for extra_t1 extra_t2 =~ 1*extra_curr_par1_t2 + lamb2*extra_curr_par2_t2 + lamb3*extra_curr_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadingsextra_t2 ~ 1*extra_t1 # This parameter regresses extra_t2 perfectly on extra_t1d_extra_1 =~ 1*extra_t2 # This defines the latent change score factor as measured perfectly by scores on extra_t2extra_t2 ~ 0*1 # This line constrains the intercept of extra_t2 to 0extra_t2 ~~ 0*extra_t2 # This fixes the variance of extra_t2 to 0d_extra_1 ~ 1 # This estimates the intercept of the change score extra_t1 ~ 1 # This estimates the intercept of extra_t1 d_extra_1 ~~ d_extra_1 # This estimates the variance of the change scores extra_t1 ~~ extra_t1 # This estimates the variance of the extra_t1 extra_t1 ~~ d_extra_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_extra_1 ~~ sb06_01_t1 # estimates the covariance/correlation with change goal variableextra_curr_par1_t1 ~~ extra_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2extra_curr_par2_t1 ~~ extra_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2extra_curr_par3_t1 ~~ extra_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2extra_curr_par1_t1 ~~ res1*extra_curr_par1_t1 # This allows residual variance on indicator X1 at T1 extra_curr_par2_t1 ~~ res2*extra_curr_par2_t1 # This allows residual variance on indicator X2 at T1extra_curr_par3_t1 ~~ res3*extra_curr_par3_t1 # This allows residual variance on indicator X3 at T1extra_curr_par1_t2 ~~ res1*extra_curr_par1_t2 # This allows residual variance on indicator X1 at T2 extra_curr_par2_t2 ~~ res2*extra_curr_par2_t2 # This allows residual variance on indicator X2 at T2 extra_curr_par3_t2 ~~ res3*extra_curr_par3_t2 # This allows residual variance on indicator X3 at T2extra_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1extra_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1extra_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1extra_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2extra_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2extra_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb06_01_t1 ~~ sb06_01_t1sb06_01_t1 ~ 1'fit_mi_lcs_extra_curr_hyp4 <-lavaan(mi_lcs_extra_curr_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_extra_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sb06_01_t1 = general change goal):
The correlation of the general change goal with the extraversion change score (current-personality) is not significantly different from zero, r = -0.088, p = 0.276.
6.4.1.2 Extraversion - ideal-personality: general change goals
Fit model:
Show the code
# adding correlation with manifest change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_extra_ideal_hyp4 <-'extra_t1 =~ 1*extra_ideal_par1_t1 + lamb2*extra_ideal_par2_t1 + lamb3*extra_ideal_par3_t1 # This specifies the measurement model for extra_t1 extra_t2 =~ 1*extra_ideal_par1_t2 + lamb2*extra_ideal_par2_t2 + lamb3*extra_ideal_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadingsextra_t2 ~ 1*extra_t1 # This parameter regresses extra_t2 perfectly on extra_t1d_extra_1 =~ 1*extra_t2 # This defines the latent change score factor as measured perfectly by scores on extra_t2extra_t2 ~ 0*1 # This line constrains the intercept of extra_t2 to 0extra_t2 ~~ 0*extra_t2 # This fixes the variance of extra_t2 to 0d_extra_1 ~ 1 # This estimates the intercept of the change score extra_t1 ~ 1 # This estimates the intercept of extra_t1 d_extra_1 ~~ d_extra_1 # This estimates the variance of the change scores extra_t1 ~~ extra_t1 # This estimates the variance of the extra_t1 extra_t1 ~~ d_extra_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_extra_1 ~~ sb06_01_t1 # estimates the covariance/correlation with change goal variableextra_ideal_par1_t1 ~~ extra_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2extra_ideal_par2_t1 ~~ extra_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2extra_ideal_par3_t1 ~~ extra_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2extra_ideal_par1_t1 ~~ res1*extra_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 extra_ideal_par2_t1 ~~ res2*extra_ideal_par2_t1 # This allows residual variance on indicator X2 at T1extra_ideal_par3_t1 ~~ res3*extra_ideal_par3_t1 # This allows residual variance on indicator X3 at T1extra_ideal_par1_t2 ~~ res1*extra_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 extra_ideal_par2_t2 ~~ res2*extra_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 extra_ideal_par3_t2 ~~ res3*extra_ideal_par3_t2 # This allows residual variance on indicator X3 at T2extra_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1extra_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1extra_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1extra_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2extra_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2extra_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb06_01_t1 ~~ sb06_01_t1sb06_01_t1 ~ 1'fit_mi_lcs_extra_ideal_hyp4 <-lavaan(mi_lcs_extra_ideal_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_extra_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sb06_01_t1 = general change goal):
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_extra_curr_specif_hyp4 <-'extra_t1 =~ 1*extra_curr_par1_t1 + lamb2*extra_curr_par2_t1 + lamb3*extra_curr_par3_t1 # This specifies the measurement model for extra_t1 extra_t2 =~ 1*extra_curr_par1_t2 + lamb2*extra_curr_par2_t2 + lamb3*extra_curr_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadingsgoals =~ 1*sb07_01_t1 + sb07_02_t1 + sb07_03_t1 # latent change goal variable (three facets per trait)extra_t2 ~ 1*extra_t1 # This parameter regresses extra_t2 perfectly on extra_t1d_extra_1 =~ 1*extra_t2 # This defines the latent change score factor as measured perfectly by scores on extra_t2extra_t2 ~ 0*1 # This line constrains the intercept of extra_t2 to 0extra_t2 ~~ 0*extra_t2 # This fixes the variance of extra_t2 to 0d_extra_1 ~ 1 # This estimates the intercept of the change score extra_t1 ~ 1 # This estimates the intercept of extra_t1 d_extra_1 ~~ d_extra_1 # This estimates the variance of the change scores extra_t1 ~~ extra_t1 # This estimates the variance of the extra_t1 extra_t1 ~~ d_extra_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_extra_1 ~~ goals # estimates the covariance/correlation with the (latent) change goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) change goal variable to 0goals ~~ goals # This estimates the variance of the (latent) change goal variableextra_curr_par1_t1 ~~ extra_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2extra_curr_par2_t1 ~~ extra_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2extra_curr_par3_t1 ~~ extra_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2extra_curr_par1_t1 ~~ res1*extra_curr_par1_t1 # This allows residual variance on indicator X1 at T1 extra_curr_par2_t1 ~~ res2*extra_curr_par2_t1 # This allows residual variance on indicator X2 at T1extra_curr_par3_t1 ~~ res3*extra_curr_par3_t1 # This allows residual variance on indicator X3 at T1extra_curr_par1_t2 ~~ res1*extra_curr_par1_t2 # This allows residual variance on indicator X1 at T2 extra_curr_par2_t2 ~~ res2*extra_curr_par2_t2 # This allows residual variance on indicator X2 at T2 extra_curr_par3_t2 ~~ res3*extra_curr_par3_t2 # This allows residual variance on indicator X3 at T2extra_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1extra_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1extra_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1extra_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2extra_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2extra_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb07_01_t1 ~~ sb07_01_t1sb07_02_t1 ~~ sb07_02_t1sb07_03_t1 ~~ sb07_03_t1sb07_01_t1 ~ 1sb07_02_t1 ~ 1sb07_03_t1 ~ 1'fit_mi_lcs_extra_curr_specif_hyp4 <-lavaan(mi_lcs_extra_curr_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_extra_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific change goal):
Correlation of specific, facet-level change goals with extraversion change score (current-personality) is not significantly different from zero, r = -0.235, p = 0.206.
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_extra_ideal_specif_hyp4 <-'extra_t1 =~ 1*extra_ideal_par1_t1 + lamb2*extra_ideal_par2_t1 + lamb3*extra_ideal_par3_t1 # This specifies the measurement model for extra_t1 extra_t2 =~ 1*extra_ideal_par1_t2 + lamb2*extra_ideal_par2_t2 + lamb3*extra_ideal_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadingsgoals =~ 1*sb07_01_t1 + sb07_02_t1 + sb07_03_t1 # latent change goal variable (three facets per trait)extra_t2 ~ 1*extra_t1 # This parameter regresses extra_t2 perfectly on extra_t1d_extra_1 =~ 1*extra_t2 # This defines the latent change score factor as measured perfectly by scores on extra_t2extra_t2 ~ 0*1 # This line constrains the intercept of extra_t2 to 0extra_t2 ~~ 0*extra_t2 # This fixes the variance of extra_t2 to 0d_extra_1 ~ 1 # This estimates the intercept of the change score extra_t1 ~ 1 # This estimates the intercept of extra_t1 d_extra_1 ~~ d_extra_1 # This estimates the variance of the change scores extra_t1 ~~ extra_t1 # This estimates the variance of the extra_t1 extra_t1 ~~ d_extra_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_extra_1 ~~ goals # estimates the covariance/correlation with the (latent) change goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) change goal variable to 0goals ~~ goals # This estimates the variance of the (latent) change goal variableextra_ideal_par1_t1 ~~ extra_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2extra_ideal_par2_t1 ~~ extra_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2extra_ideal_par3_t1 ~~ extra_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2extra_ideal_par1_t1 ~~ res1*extra_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 extra_ideal_par2_t1 ~~ res2*extra_ideal_par2_t1 # This allows residual variance on indicator X2 at T1extra_ideal_par3_t1 ~~ res3*extra_ideal_par3_t1 # This allows residual variance on indicator X3 at T1extra_ideal_par1_t2 ~~ res1*extra_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 extra_ideal_par2_t2 ~~ res2*extra_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 extra_ideal_par3_t2 ~~ res3*extra_ideal_par3_t2 # This allows residual variance on indicator X3 at T2extra_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1extra_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1extra_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1extra_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2extra_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2extra_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb07_01_t1 ~~ sb07_01_t1sb07_02_t1 ~~ sb07_02_t1sb07_03_t1 ~~ sb07_03_t1sb07_01_t1 ~ 1sb07_02_t1 ~ 1sb07_03_t1 ~ 1'fit_mi_lcs_extra_ideal_specif_hyp4 <-lavaan(mi_lcs_extra_ideal_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_extra_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific change goal):
Correlation of specific, facet-level change goals with extraversion change score (ideal-personality) is not significantly different from zero, r = 0.113, p = 0.417.
6.4.1.5 Agreeableness - current-personality: general change goals
Fit model:
Show the code
# adding correlation with manifest change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_agree_curr_hyp4 <-'agree_t1 =~ 1*agree_curr_par1_t1 + lamb2*agree_curr_par2_t1 + lamb3*agree_curr_par3_t1 # This specifies the measurement model for agree_t1agree_t2 =~ 1*agree_curr_par1_t2 + lamb2*agree_curr_par2_t2 + lamb3*agree_curr_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadingsagree_t2 ~ 1*agree_t1 # This parameter regresses agree_t2 perfectly on agree_t1d_agree_1 =~ 1*agree_t2 # This defines the latent change score factor as measured perfectly by scores on agree_t2agree_t2 ~ 0*1 # This line constrains the intercept of agree_t2 to 0agree_t2 ~~ 0*agree_t2 # This fixes the variance of agree_t2 to 0d_agree_1 ~ 1 # This estimates the intercept of the change score agree_t1 ~ 1 # This estimates the intercept of agree_t1 d_agree_1 ~~ d_agree_1 # This estimates the variance of the change scores agree_t1 ~~ agree_t1 # This estimates the variance of the agree_t1 agree_t1 ~~ d_agree_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_agree_1 ~~ sb06_01_t1 # estimates the covariance/correlation with change goal variableagree_curr_par1_t1 ~~ agree_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2agree_curr_par2_t1 ~~ agree_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2agree_curr_par3_t1 ~~ agree_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2agree_curr_par1_t1 ~~ res1*agree_curr_par1_t1 # This allows residual variance on indicator X1 at T1 agree_curr_par2_t1 ~~ res2*agree_curr_par2_t1 # This allows residual variance on indicator X2 at T1agree_curr_par3_t1 ~~ res3*agree_curr_par3_t1 # This allows residual variance on indicator X3 at T1agree_curr_par1_t2 ~~ res1*agree_curr_par1_t2 # This allows residual variance on indicator X1 at T2 agree_curr_par2_t2 ~~ res2*agree_curr_par2_t2 # This allows residual variance on indicator X2 at T2 agree_curr_par3_t2 ~~ res3*agree_curr_par3_t2 # This allows residual variance on indicator X3 at T2agree_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1agree_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1agree_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1agree_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2agree_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2agree_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb06_01_t1 ~~ sb06_01_t1sb06_01_t1 ~ 1'fit_mi_lcs_agree_curr_hyp4 <-lavaan(mi_lcs_agree_curr_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_agree_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with agreeableness change score (current-personality) is not significantly different from zero, r = 0.11, p = 0.167.
6.4.1.6 Agreeableness - ideal-personality: general change goals
Fit model:
Show the code
# adding correlation with manifest change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_agree_ideal_hyp4 <-'agree_t1 =~ 1*agree_ideal_par1_t1 + lamb2*agree_ideal_par2_t1 + lamb3*agree_ideal_par3_t1 # This specifies the measurement model for agree_t1 agree_t2 =~ 1*agree_ideal_par1_t2 + lamb2*agree_ideal_par2_t2 + lamb3*agree_ideal_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadingsagree_t2 ~ 1*agree_t1 # This parameter regresses agree_t2 perfectly on agree_t1d_agree_1 =~ 1*agree_t2 # This defines the latent change score factor as measured perfectly by scores on agree_t2agree_t2 ~ 0*1 # This line constrains the intercept of agree_t2 to 0agree_t2 ~~ 0*agree_t2 # This fixes the variance of agree_t2 to 0d_agree_1 ~ 1 # This estimates the intercept of the change score agree_t1 ~ 1 # This estimates the intercept of agree_t1 d_agree_1 ~~ d_agree_1 # This estimates the variance of the change scores agree_t1 ~~ agree_t1 # This estimates the variance of the agree_t1 agree_t1 ~~ d_agree_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_agree_1 ~~ sb06_01_t1 # estimates the covariance/correlation with change goal variableagree_ideal_par1_t1 ~~ agree_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2agree_ideal_par2_t1 ~~ agree_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2agree_ideal_par3_t1 ~~ agree_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2agree_ideal_par1_t1 ~~ res1*agree_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 agree_ideal_par2_t1 ~~ res2*agree_ideal_par2_t1 # This allows residual variance on indicator X2 at T1agree_ideal_par3_t1 ~~ res3*agree_ideal_par3_t1 # This allows residual variance on indicator X3 at T1agree_ideal_par1_t2 ~~ res1*agree_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 agree_ideal_par2_t2 ~~ res2*agree_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 agree_ideal_par3_t2 ~~ res3*agree_ideal_par3_t2 # This allows residual variance on indicator X3 at T2agree_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1agree_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1agree_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1agree_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2agree_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2agree_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb06_01_t1 ~~ sb06_01_t1sb06_01_t1 ~ 1'fit_mi_lcs_agree_ideal_hyp4 <-lavaan(mi_lcs_agree_ideal_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_agree_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sb06_01_t1 = general change goal):
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_agree_curr_specif_hyp4 <-'agree_t1 =~ 1*agree_curr_par1_t1 + lamb2*agree_curr_par2_t1 + lamb3*agree_curr_par3_t1 # This specifies the measurement model for agree_t1agree_t2 =~ 1*agree_curr_par1_t2 + lamb2*agree_curr_par2_t2 + lamb3*agree_curr_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadingsgoals =~ 1*sb07_04_t1 + sb07_05_t1 + sb07_06_t1 # latent change goal variable (three facets per trait)agree_t2 ~ 1*agree_t1 # This parameter regresses agree_t2 perfectly on agree_t1d_agree_1 =~ 1*agree_t2 # This defines the latent change score factor as measured perfectly by scores on agree_t2agree_t2 ~ 0*1 # This line constrains the intercept of agree_t2 to 0agree_t2 ~~ 0*agree_t2 # This fixes the variance of agree_t2 to 0d_agree_1 ~ 1 # This estimates the intercept of the change score agree_t1 ~ 1 # This estimates the intercept of agree_t1 d_agree_1 ~~ d_agree_1 # This estimates the variance of the change scores agree_t1 ~~ agree_t1 # This estimates the variance of the agree_t1 agree_t1 ~~ d_agree_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_agree_1 ~~ goals # estimates the covariance/correlation with the (latent) change goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) change goal variable to 0goals ~~ goals # This estimates the variance of the (latent) change goal variableagree_curr_par1_t1 ~~ agree_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2agree_curr_par2_t1 ~~ agree_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2agree_curr_par3_t1 ~~ agree_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2agree_curr_par1_t1 ~~ res1*agree_curr_par1_t1 # This allows residual variance on indicator X1 at T1 agree_curr_par2_t1 ~~ res2*agree_curr_par2_t1 # This allows residual variance on indicator X2 at T1agree_curr_par3_t1 ~~ res3*agree_curr_par3_t1 # This allows residual variance on indicator X3 at T1agree_curr_par1_t2 ~~ res1*agree_curr_par1_t2 # This allows residual variance on indicator X1 at T2 agree_curr_par2_t2 ~~ res2*agree_curr_par2_t2 # This allows residual variance on indicator X2 at T2 agree_curr_par3_t2 ~~ res3*agree_curr_par3_t2 # This allows residual variance on indicator X3 at T2agree_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1agree_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1agree_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1agree_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2agree_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2agree_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb07_04_t1 ~~ sb07_04_t1sb07_05_t1 ~~ sb07_05_t1sb07_06_t1 ~~ sb07_06_t1sb07_04_t1 ~ 1sb07_05_t1 ~ 1sb07_06_t1 ~ 1'fit_mi_lcs_agree_curr_specif_hyp4 <-lavaan(mi_lcs_agree_curr_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_agree_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific change goal):
Correlation of specific, facet-level change goals with agreeableness change score (current-personality) is not significantly different from zero, r = -0.072, p = 0.467.
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_agree_ideal_specif_hyp4 <-'agree_t1 =~ 1*agree_ideal_par1_t1 + lamb2*agree_ideal_par2_t1 + lamb3*agree_ideal_par3_t1 # This specifies the measurement model for agree_t1 agree_t2 =~ 1*agree_ideal_par1_t2 + lamb2*agree_ideal_par2_t2 + lamb3*agree_ideal_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadingsgoals =~ 1*sb07_04_t1 + sb07_05_t1 + sb07_06_t1 # latent change goal variable (three facets per trait)agree_t2 ~ 1*agree_t1 # This parameter regresses agree_t2 perfectly on agree_t1d_agree_1 =~ 1*agree_t2 # This defines the latent change score factor as measured perfectly by scores on agree_t2agree_t2 ~ 0*1 # This line constrains the intercept of agree_t2 to 0agree_t2 ~~ 0*agree_t2 # This fixes the variance of agree_t2 to 0d_agree_1 ~ 1 # This estimates the intercept of the change score agree_t1 ~ 1 # This estimates the intercept of agree_t1 d_agree_1 ~~ d_agree_1 # This estimates the variance of the change scores agree_t1 ~~ agree_t1 # This estimates the variance of the agree_t1 agree_t1 ~~ d_agree_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_agree_1 ~~ goals # estimates the covariance/correlation with the (latent) change goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) change goal variable to 0goals ~~ goals # This estimates the variance of the (latent) change goal variableagree_ideal_par1_t1 ~~ agree_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2agree_ideal_par2_t1 ~~ agree_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2agree_ideal_par3_t1 ~~ agree_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2agree_ideal_par1_t1 ~~ res1*agree_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 agree_ideal_par2_t1 ~~ res2*agree_ideal_par2_t1 # This allows residual variance on indicator X2 at T1agree_ideal_par3_t1 ~~ res3*agree_ideal_par3_t1 # This allows residual variance on indicator X3 at T1agree_ideal_par1_t2 ~~ res1*agree_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 agree_ideal_par2_t2 ~~ res2*agree_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 agree_ideal_par3_t2 ~~ res3*agree_ideal_par3_t2 # This allows residual variance on indicator X3 at T2agree_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1agree_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1agree_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1agree_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2agree_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2agree_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb07_04_t1 ~~ sb07_04_t1sb07_05_t1 ~~ sb07_05_t1sb07_06_t1 ~~ sb07_06_t1sb07_04_t1 ~ 1sb07_05_t1 ~ 1sb07_06_t1 ~ 1'fit_mi_lcs_agree_ideal_specif_hyp4 <-lavaan(mi_lcs_agree_ideal_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_agree_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific change goal):
Correlation of specific, facet-level change goals with agreeableness change score (ideal-personality) is not significantly different from zero, r = -0.014, p = 0.88.
6.4.1.9 Conscientiousness - current-personality: general change goals
Fit model:
Show the code
# adding correlation with manifest change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_consc_curr_hyp4 <-'consc_t1 =~ 1*consc_curr_par1_t1 + lamb2*consc_curr_par2_t1 + lamb3*consc_curr_par3_t1 # This specifies the measurement model for consc_t1 consc_t2 =~ 1*consc_curr_par1_t2 + lamb2*consc_curr_par2_t2 + lamb3*consc_curr_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadingsconsc_t2 ~ 1*consc_t1 # This parameter regresses consc_t2 perfectly on consc_t1d_consc_1 =~ 1*consc_t2 # This defines the latent change score factor as measured perfectly by scores on consc_t2consc_t2 ~ 0*1 # This line constrains the intercept of consc_t2 to 0consc_t2 ~~ 0*consc_t2 # This fixes the variance of consc_t2 to 0d_consc_1 ~ 1 # This estimates the intercept of the change score consc_t1 ~ 1 # This estimates the intercept of consc_t1 d_consc_1 ~~ d_consc_1 # This estimates the variance of the change scores consc_t1 ~~ consc_t1 # This estimates the variance of the consc_t1 consc_t1 ~~ d_consc_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_consc_1 ~~ sb06_01_t1 # estimates the covariance/correlation with change goal variableconsc_curr_par1_t1 ~~ consc_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2consc_curr_par2_t1 ~~ consc_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2consc_curr_par3_t1 ~~ consc_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2consc_curr_par1_t1 ~~ res1*consc_curr_par1_t1 # This allows residual variance on indicator X1 at T1 consc_curr_par2_t1 ~~ res2*consc_curr_par2_t1 # This allows residual variance on indicator X2 at T1consc_curr_par3_t1 ~~ res3*consc_curr_par3_t1 # This allows residual variance on indicator X3 at T1consc_curr_par1_t2 ~~ res1*consc_curr_par1_t2 # This allows residual variance on indicator X1 at T2 consc_curr_par2_t2 ~~ res2*consc_curr_par2_t2 # This allows residual variance on indicator X2 at T2 consc_curr_par3_t2 ~~ res3*consc_curr_par3_t2 # This allows residual variance on indicator X3 at T2consc_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1consc_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1consc_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1consc_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2consc_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2consc_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb06_01_t1 ~~ sb06_01_t1sb06_01_t1 ~ 1'fit_mi_lcs_consc_curr_hyp4 <-lavaan(mi_lcs_consc_curr_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_consc_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with conscientiousness change score (current-personality) is not significantly different from zero, r = 0.053, p = 0.536.
6.4.1.10 Conscientiousness - ideal-personality: general change goals
Fit model:
Show the code
# adding correlation with manifest change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_consc_ideal_hyp4 <-'consc_t1 =~ 1*consc_ideal_par1_t1 + lamb2*consc_ideal_par2_t1 + lamb3*consc_ideal_par3_t1 # This specifies the measurement model for consc_t1consc_t2 =~ 1*consc_ideal_par1_t2 + lamb2*consc_ideal_par2_t2 + lamb3*consc_ideal_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadingsconsc_t2 ~ 1*consc_t1 # This parameter regresses consc_t2 perfectly on consc_t1d_consc_1 =~ 1*consc_t2 # This defines the latent change score factor as measured perfectly by scores on consc_t2consc_t2 ~ 0*1 # This line constrains the intercept of consc_t2 to 0consc_t2 ~~ 0*consc_t2 # This fixes the variance of consc_t2 to 0d_consc_1 ~ 1 # This estimates the intercept of the change score consc_t1 ~ 1 # This estimates the intercept of consc_t1 d_consc_1 ~~ d_consc_1 # This estimates the variance of the change scores consc_t1 ~~ consc_t1 # This estimates the variance of the consc_t1 consc_t1 ~~ d_consc_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_consc_1 ~~ sb06_01_t1 # estimates the covariance/correlation with change goal variableconsc_ideal_par1_t1 ~~ consc_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2consc_ideal_par2_t1 ~~ consc_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2consc_ideal_par3_t1 ~~ consc_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2consc_ideal_par1_t1 ~~ res1*consc_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 consc_ideal_par2_t1 ~~ res2*consc_ideal_par2_t1 # This allows residual variance on indicator X2 at T1consc_ideal_par3_t1 ~~ res3*consc_ideal_par3_t1 # This allows residual variance on indicator X3 at T1consc_ideal_par1_t2 ~~ res1*consc_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 consc_ideal_par2_t2 ~~ res2*consc_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 consc_ideal_par3_t2 ~~ res3*consc_ideal_par3_t2 # This allows residual variance on indicator X3 at T2consc_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1consc_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1consc_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1consc_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2consc_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2consc_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb06_01_t1 ~~ sb06_01_t1sb06_01_t1 ~ 1'fit_mi_lcs_consc_ideal_hyp4 <-lavaan(mi_lcs_consc_ideal_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_consc_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with conscientiousness change score (ideal-personality) is not significantly different from zero, r = 0.043, p = 0.59.
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_consc_curr_specif_hyp4 <-'consc_t1 =~ 1*consc_curr_par1_t1 + lamb2*consc_curr_par2_t1 + lamb3*consc_curr_par3_t1 # This specifies the measurement model for consc_t1 consc_t2 =~ 1*consc_curr_par1_t2 + lamb2*consc_curr_par2_t2 + lamb3*consc_curr_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadingsgoals =~ 1*sb07_07_t1 + sb07_08_t1 + sb07_09_t1 # latent change goal variable (three facets per trait)consc_t2 ~ 1*consc_t1 # This parameter regresses consc_t2 perfectly on consc_t1d_consc_1 =~ 1*consc_t2 # This defines the latent change score factor as measured perfectly by scores on consc_t2consc_t2 ~ 0*1 # This line constrains the intercept of consc_t2 to 0consc_t2 ~~ 0*consc_t2 # This fixes the variance of consc_t2 to 0d_consc_1 ~ 1 # This estimates the intercept of the change score consc_t1 ~ 1 # This estimates the intercept of consc_t1 d_consc_1 ~~ d_consc_1 # This estimates the variance of the change scores consc_t1 ~~ consc_t1 # This estimates the variance of the consc_t1 consc_t1 ~~ d_consc_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_consc_1 ~~ goals # estimates the covariance/correlation with the (latent) change goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) change goal variable to 0goals ~~ goals # This estimates the variance of the (latent) change goal variableconsc_curr_par1_t1 ~~ consc_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2consc_curr_par2_t1 ~~ consc_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2consc_curr_par3_t1 ~~ consc_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2consc_curr_par1_t1 ~~ res1*consc_curr_par1_t1 # This allows residual variance on indicator X1 at T1 consc_curr_par2_t1 ~~ res2*consc_curr_par2_t1 # This allows residual variance on indicator X2 at T1consc_curr_par3_t1 ~~ res3*consc_curr_par3_t1 # This allows residual variance on indicator X3 at T1consc_curr_par1_t2 ~~ res1*consc_curr_par1_t2 # This allows residual variance on indicator X1 at T2 consc_curr_par2_t2 ~~ res2*consc_curr_par2_t2 # This allows residual variance on indicator X2 at T2 consc_curr_par3_t2 ~~ res3*consc_curr_par3_t2 # This allows residual variance on indicator X3 at T2consc_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1consc_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1consc_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1consc_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2consc_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2consc_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb07_07_t1 ~~ sb07_07_t1sb07_08_t1 ~~ sb07_08_t1sb07_09_t1 ~~ sb07_09_t1sb07_07_t1 ~ 1sb07_08_t1 ~ 1sb07_09_t1 ~ 1'fit_mi_lcs_consc_curr_specif_hyp4 <-lavaan(mi_lcs_consc_curr_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_consc_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific change goal):
Correlation of specific, facet-level change goals with conscientiousness change score (current-personality) is significantly different from zero, r = -0.213, p = 0.018.
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_consc_ideal_specif_hyp4 <-'consc_t1 =~ 1*consc_ideal_par1_t1 + lamb2*consc_ideal_par2_t1 + lamb3*consc_ideal_par3_t1 # This specifies the measurement model for consc_t1consc_t2 =~ 1*consc_ideal_par1_t2 + lamb2*consc_ideal_par2_t2 + lamb3*consc_ideal_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadingsgoals =~ 1*sb07_07_t1 + sb07_08_t1 + sb07_09_t1 # latent change goal variable (three facets per trait)consc_t2 ~ 1*consc_t1 # This parameter regresses consc_t2 perfectly on consc_t1d_consc_1 =~ 1*consc_t2 # This defines the latent change score factor as measured perfectly by scores on consc_t2consc_t2 ~ 0*1 # This line constrains the intercept of consc_t2 to 0consc_t2 ~~ 0*consc_t2 # This fixes the variance of consc_t2 to 0d_consc_1 ~ 1 # This estimates the intercept of the change score consc_t1 ~ 1 # This estimates the intercept of consc_t1 d_consc_1 ~~ d_consc_1 # This estimates the variance of the change scores consc_t1 ~~ consc_t1 # This estimates the variance of the consc_t1 consc_t1 ~~ d_consc_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_consc_1 ~~ goals # estimates the covariance/correlation with the (latent) change goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) change goal variable to 0goals ~~ goals # This estimates the variance of the (latent) change goal variableconsc_ideal_par1_t1 ~~ consc_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2consc_ideal_par2_t1 ~~ consc_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2consc_ideal_par3_t1 ~~ consc_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2consc_ideal_par1_t1 ~~ res1*consc_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 consc_ideal_par2_t1 ~~ res2*consc_ideal_par2_t1 # This allows residual variance on indicator X2 at T1consc_ideal_par3_t1 ~~ res3*consc_ideal_par3_t1 # This allows residual variance on indicator X3 at T1consc_ideal_par1_t2 ~~ res1*consc_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 consc_ideal_par2_t2 ~~ res2*consc_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 consc_ideal_par3_t2 ~~ res3*consc_ideal_par3_t2 # This allows residual variance on indicator X3 at T2consc_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1consc_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1consc_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1consc_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2consc_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2consc_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb07_07_t1 ~~ sb07_07_t1sb07_08_t1 ~~ sb07_08_t1sb07_09_t1 ~~ sb07_09_t1sb07_07_t1 ~ 1sb07_08_t1 ~ 1sb07_09_t1 ~ 1'fit_mi_lcs_consc_ideal_specif_hyp4 <-lavaan(mi_lcs_consc_ideal_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_consc_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific change goal):
Correlation of specific, facet-level change goals with conscientiousness change score (ideal-personality) is not significantly different from zero, r = -0.113, p = 0.209.
6.4.1.13 Neuroticism - current-personality: general change goals
Fit model:
Show the code
# adding correlation with manifest change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_neuro_curr_hyp4 <-'neuro_t1 =~ 1*neuro_curr_par1_t1 + lamb2*neuro_curr_par2_t1 + lamb3*neuro_curr_par3_t1 # This specifies the measurement model for neuro_t1 neuro_t2 =~ 1*neuro_curr_par1_t2 + lamb2*neuro_curr_par2_t2 + lamb3*neuro_curr_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadingsneuro_t2 ~ 1*neuro_t1 # This parameter regresses neuro_t2 perfectly on neuro_t1d_neuro_1 =~ 1*neuro_t2 # This defines the latent change score factor as measured perfectly by scores on neuro_t2neuro_t2 ~ 0*1 # This line constrains the intercept of neuro_t2 to 0neuro_t2 ~~ 0*neuro_t2 # This fixes the variance of neuro_t2 to 0d_neuro_1 ~ 1 # This estimates the intercept of the change score neuro_t1 ~ 1 # This estimates the intercept of neuro_t1 d_neuro_1 ~~ d_neuro_1 # This estimates the variance of the change scores neuro_t1 ~~ neuro_t1 # This estimates the variance of the neuro_t1 neuro_t1 ~~ d_neuro_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_neuro_1 ~~ sb06_01_t1 # estimates the covariance/correlation with change goal variableneuro_curr_par1_t1 ~~ neuro_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2neuro_curr_par2_t1 ~~ neuro_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2neuro_curr_par3_t1 ~~ neuro_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2neuro_curr_par1_t1 ~~ res1*neuro_curr_par1_t1 # This allows residual variance on indicator X1 at T1 neuro_curr_par2_t1 ~~ res2*neuro_curr_par2_t1 # This allows residual variance on indicator X2 at T1neuro_curr_par3_t1 ~~ res3*neuro_curr_par3_t1 # This allows residual variance on indicator X3 at T1neuro_curr_par1_t2 ~~ res1*neuro_curr_par1_t2 # This allows residual variance on indicator X1 at T2 neuro_curr_par2_t2 ~~ res2*neuro_curr_par2_t2 # This allows residual variance on indicator X2 at T2 neuro_curr_par3_t2 ~~ res3*neuro_curr_par3_t2 # This allows residual variance on indicator X3 at T2neuro_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1neuro_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1neuro_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1neuro_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2neuro_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2neuro_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb06_01_t1 ~~ sb06_01_t1sb06_01_t1 ~ 1'fit_mi_lcs_neuro_curr_hyp4 <-lavaan(mi_lcs_neuro_curr_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_neuro_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with neuroticism change score (current-personality) is not significantly different from zero, r = -0.009, p = 0.902.
6.4.1.14 Neuroticism - ideal-personality: general change goals
Fit model:
Show the code
# adding correlation with manifest change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_neuro_ideal_hyp4 <-'neuro_t1 =~ 1*neuro_ideal_par1_t1 + lamb2*neuro_ideal_par2_t1 + lamb3*neuro_ideal_par3_t1 # This specifies the measurement model for neuro_t1 neuro_t2 =~ 1*neuro_ideal_par1_t2 + lamb2*neuro_ideal_par2_t2 + lamb3*neuro_ideal_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadingsneuro_t2 ~ 1*neuro_t1 # This parameter regresses neuro_t2 perfectly on neuro_t1d_neuro_1 =~ 1*neuro_t2 # This defines the latent change score factor as measured perfectly by scores on neuro_t2neuro_t2 ~ 0*1 # This line constrains the intercept of neuro_t2 to 0neuro_t2 ~~ 0*neuro_t2 # This fixes the variance of neuro_t2 to 0d_neuro_1 ~ 1 # This estimates the intercept of the change score neuro_t1 ~ 1 # This estimates the intercept of neuro_t1 d_neuro_1 ~~ d_neuro_1 # This estimates the variance of the change scores neuro_t1 ~~ neuro_t1 # This estimates the variance of the neuro_t1 neuro_t1 ~~ d_neuro_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_neuro_1 ~~ sb06_01_t1 # estimates the covariance/correlation with change goal variableneuro_ideal_par1_t1 ~~ neuro_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2neuro_ideal_par2_t1 ~~ neuro_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2neuro_ideal_par3_t1 ~~ neuro_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2neuro_ideal_par1_t1 ~~ res1*neuro_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 neuro_ideal_par2_t1 ~~ res2*neuro_ideal_par2_t1 # This allows residual variance on indicator X2 at T1neuro_ideal_par3_t1 ~~ res3*neuro_ideal_par3_t1 # This allows residual variance on indicator X3 at T1neuro_ideal_par1_t2 ~~ res1*neuro_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 neuro_ideal_par2_t2 ~~ res2*neuro_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 neuro_ideal_par3_t2 ~~ res3*neuro_ideal_par3_t2 # This allows residual variance on indicator X3 at T2neuro_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1neuro_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1neuro_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1neuro_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2neuro_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2neuro_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb06_01_t1 ~~ sb06_01_t1sb06_01_t1 ~ 1'fit_mi_lcs_neuro_ideal_hyp4 <-lavaan(mi_lcs_neuro_ideal_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_neuro_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sb06_01_t1 = general change goal):
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_neuro_curr_specif_hyp4 <-'neuro_t1 =~ 1*neuro_curr_par1_t1 + lamb2*neuro_curr_par2_t1 + lamb3*neuro_curr_par3_t1 # This specifies the measurement model for neuro_t1 neuro_t2 =~ 1*neuro_curr_par1_t2 + lamb2*neuro_curr_par2_t2 + lamb3*neuro_curr_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadingsgoals =~ 1*sb07_10_t1 + sb07_11_t1 + sb07_12_t1 # latent change goal variable (three facets per trait)neuro_t2 ~ 1*neuro_t1 # This parameter regresses neuro_t2 perfectly on neuro_t1d_neuro_1 =~ 1*neuro_t2 # This defines the latent change score factor as measured perfectly by scores on neuro_t2neuro_t2 ~ 0*1 # This line constrains the intercept of neuro_t2 to 0neuro_t2 ~~ 0*neuro_t2 # This fixes the variance of neuro_t2 to 0d_neuro_1 ~ 1 # This estimates the intercept of the change score neuro_t1 ~ 1 # This estimates the intercept of neuro_t1 d_neuro_1 ~~ d_neuro_1 # This estimates the variance of the change scores neuro_t1 ~~ neuro_t1 # This estimates the variance of the neuro_t1 neuro_t1 ~~ d_neuro_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_neuro_1 ~~ goals # estimates the covariance/correlation with the (latent) change goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) change goal variable to 0goals ~~ goals # This estimates the variance of the (latent) change goal variableneuro_curr_par1_t1 ~~ neuro_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2neuro_curr_par2_t1 ~~ neuro_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2neuro_curr_par3_t1 ~~ neuro_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2neuro_curr_par1_t1 ~~ res1*neuro_curr_par1_t1 # This allows residual variance on indicator X1 at T1 neuro_curr_par2_t1 ~~ res2*neuro_curr_par2_t1 # This allows residual variance on indicator X2 at T1neuro_curr_par3_t1 ~~ res3*neuro_curr_par3_t1 # This allows residual variance on indicator X3 at T1neuro_curr_par1_t2 ~~ res1*neuro_curr_par1_t2 # This allows residual variance on indicator X1 at T2 neuro_curr_par2_t2 ~~ res2*neuro_curr_par2_t2 # This allows residual variance on indicator X2 at T2 neuro_curr_par3_t2 ~~ res3*neuro_curr_par3_t2 # This allows residual variance on indicator X3 at T2neuro_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1neuro_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1neuro_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1neuro_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2neuro_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2neuro_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb07_10_t1 ~~ sb07_10_t1sb07_11_t1 ~~ sb07_11_t1sb07_12_t1 ~~ sb07_12_t1sb07_10_t1 ~ 1sb07_11_t1 ~ 1sb07_12_t1 ~ 1'fit_mi_lcs_neuro_curr_specif_hyp4 <-lavaan(mi_lcs_neuro_curr_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_neuro_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific change goal):
The correlation of specific, facet-level change goals with neuroticism change score (current-personality) is significantly different from zero, r = 0.248, p = 0.002.
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_neuro_ideal_specif_hyp4 <-'neuro_t1 =~ 1*neuro_ideal_par1_t1 + lamb2*neuro_ideal_par2_t1 + lamb3*neuro_ideal_par3_t1 # This specifies the measurement model for neuro_t1 neuro_t2 =~ 1*neuro_ideal_par1_t2 + lamb2*neuro_ideal_par2_t2 + lamb3*neuro_ideal_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadingsgoals =~ 1*sb07_10_t1 + sb07_11_t1 + sb07_12_t1 # latent change goal variable (three facets per trait)neuro_t2 ~ 1*neuro_t1 # This parameter regresses neuro_t2 perfectly on neuro_t1d_neuro_1 =~ 1*neuro_t2 # This defines the latent change score factor as measured perfectly by scores on neuro_t2neuro_t2 ~ 0*1 # This line constrains the intercept of neuro_t2 to 0neuro_t2 ~~ 0*neuro_t2 # This fixes the variance of neuro_t2 to 0d_neuro_1 ~ 1 # This estimates the intercept of the change score neuro_t1 ~ 1 # This estimates the intercept of neuro_t1 d_neuro_1 ~~ d_neuro_1 # This estimates the variance of the change scores neuro_t1 ~~ neuro_t1 # This estimates the variance of the neuro_t1 neuro_t1 ~~ d_neuro_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_neuro_1 ~~ goals # estimates the covariance/correlation with the (latent) change goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) change goal variable to 0goals ~~ goals # This estimates the variance of the (latent) change goal variableneuro_ideal_par1_t1 ~~ neuro_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2neuro_ideal_par2_t1 ~~ neuro_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2neuro_ideal_par3_t1 ~~ neuro_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2neuro_ideal_par1_t1 ~~ res1*neuro_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 neuro_ideal_par2_t1 ~~ res2*neuro_ideal_par2_t1 # This allows residual variance on indicator X2 at T1neuro_ideal_par3_t1 ~~ res3*neuro_ideal_par3_t1 # This allows residual variance on indicator X3 at T1neuro_ideal_par1_t2 ~~ res1*neuro_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 neuro_ideal_par2_t2 ~~ res2*neuro_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 neuro_ideal_par3_t2 ~~ res3*neuro_ideal_par3_t2 # This allows residual variance on indicator X3 at T2neuro_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1neuro_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1neuro_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1neuro_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2neuro_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2neuro_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb07_10_t1 ~~ sb07_10_t1sb07_11_t1 ~~ sb07_11_t1sb07_12_t1 ~~ sb07_12_t1sb07_10_t1 ~ 1sb07_11_t1 ~ 1sb07_12_t1 ~ 1'fit_mi_lcs_neuro_ideal_specif_hyp4 <-lavaan(mi_lcs_neuro_ideal_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_neuro_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific change goal):
Correlation of specific, facet-level change goals with neuroticism change score (ideal-personality) is not significantly different from zero, r = 0.068, p = 0.397.
6.4.1.17 Openness - current-personality: general change goals
Fit model:
Show the code
# adding correlation with manifest change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_openn_curr_hyp4 <-'openn_t1 =~ 1*openn_curr_par1_t1 + lamb2*openn_curr_par2_t1 + lamb3*openn_curr_par3_t1 # This specifies the measurement model for openn_t1openn_t2 =~ 1*openn_curr_par1_t2 + lamb2*openn_curr_par2_t2 + lamb3*openn_curr_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadingsopenn_t2 ~ 1*openn_t1 # This parameter regresses openn_t2 perfectly on openn_t1d_openn_1 =~ 1*openn_t2 # This defines the latent change score factor as measured perfectly by scores on openn_t2openn_t2 ~ 0*1 # This line constrains the intercept of openn_t2 to 0openn_t2 ~~ 0*openn_t2 # This fixes the variance of openn_t2 to 0d_openn_1 ~ 1 # This estimates the intercept of the change score openn_t1 ~ 1 # This estimates the intercept of openn_t1 d_openn_1 ~~ d_openn_1 # This estimates the variance of the change scores openn_t1 ~~ openn_t1 # This estimates the variance of the openn_t1 openn_t1 ~~ d_openn_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_openn_1 ~~ sb06_01_t1 # estimates the covariance/correlation with change goal variableopenn_curr_par1_t1 ~~ openn_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2openn_curr_par2_t1 ~~ openn_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2openn_curr_par3_t1 ~~ openn_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2openn_curr_par1_t1 ~~ res1*openn_curr_par1_t1 # This allows residual variance on indicator X1 at T1 openn_curr_par2_t1 ~~ res2*openn_curr_par2_t1 # This allows residual variance on indicator X2 at T1openn_curr_par3_t1 ~~ res3*openn_curr_par3_t1 # This allows residual variance on indicator X3 at T1openn_curr_par1_t2 ~~ res1*openn_curr_par1_t2 # This allows residual variance on indicator X1 at T2 openn_curr_par2_t2 ~~ res2*openn_curr_par2_t2 # This allows residual variance on indicator X2 at T2 openn_curr_par3_t2 ~~ res3*openn_curr_par3_t2 # This allows residual variance on indicator X3 at T2openn_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1openn_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1openn_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1openn_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2openn_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2openn_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb06_01_t1 ~~ sb06_01_t1sb06_01_t1 ~ 1'fit_mi_lcs_openn_curr_hyp4 <-lavaan(mi_lcs_openn_curr_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_openn_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with openness change score (current-personality) is not significantly different from zero, r = -0.059, p = 0.489.
6.4.1.18 Openness - ideal-personality: general change goals
Fit model:
Show the code
# adding correlation with manifest change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_openn_ideal_hyp4 <-'openn_t1 =~ 1*openn_ideal_par1_t1 + lamb2*openn_ideal_par2_t1 + lamb3*openn_ideal_par3_t1 # This specifies the measurement model for openn_t1 openn_t2 =~ 1*openn_ideal_par1_t2 + lamb2*openn_ideal_par2_t2 + lamb3*openn_ideal_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadingsopenn_t2 ~ 1*openn_t1 # This parameter regresses openn_t2 perfectly on openn_t1d_openn_1 =~ 1*openn_t2 # This defines the latent change score factor as measured perfectly by scores on openn_t2openn_t2 ~ 0*1 # This line constrains the intercept of openn_t2 to 0openn_t2 ~~ 0*openn_t2 # This fixes the variance of openn_t2 to 0d_openn_1 ~ 1 # This estimates the intercept of the change score openn_t1 ~ 1 # This estimates the intercept of openn_t1 d_openn_1 ~~ d_openn_1 # This estimates the variance of the change scores openn_t1 ~~ openn_t1 # This estimates the variance of the openn_t1 openn_t1 ~~ d_openn_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_openn_1 ~~ sb06_01_t1 # estimates the covariance/correlation with change goal variableopenn_ideal_par1_t1 ~~ openn_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2openn_ideal_par2_t1 ~~ openn_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2openn_ideal_par3_t1 ~~ openn_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2openn_ideal_par1_t1 ~~ res1*openn_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 openn_ideal_par2_t1 ~~ res2*openn_ideal_par2_t1 # This allows residual variance on indicator X2 at T1openn_ideal_par3_t1 ~~ res3*openn_ideal_par3_t1 # This allows residual variance on indicator X3 at T1openn_ideal_par1_t2 ~~ res1*openn_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 openn_ideal_par2_t2 ~~ res2*openn_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 openn_ideal_par3_t2 ~~ res3*openn_ideal_par3_t2 # This allows residual variance on indicator X3 at T2openn_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1openn_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1openn_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1openn_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2openn_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2openn_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb06_01_t1 ~~ sb06_01_t1sb06_01_t1 ~ 1'fit_mi_lcs_openn_ideal_hyp4 <-lavaan(mi_lcs_openn_ideal_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_openn_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sb06_01_t1 = general change goal):
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_openn_curr_specif_hyp4 <-'openn_t1 =~ 1*openn_curr_par1_t1 + lamb2*openn_curr_par2_t1 + lamb3*openn_curr_par3_t1 # This specifies the measurement model for openn_t1openn_t2 =~ 1*openn_curr_par1_t2 + lamb2*openn_curr_par2_t2 + lamb3*openn_curr_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadingsgoals =~ 1*sb07_13_t1 + sb07_14_t1 + sb07_15_t1 # latent change goal variable (three facets per trait)openn_t2 ~ 1*openn_t1 # This parameter regresses openn_t2 perfectly on openn_t1d_openn_1 =~ 1*openn_t2 # This defines the latent change score factor as measured perfectly by scores on openn_t2openn_t2 ~ 0*1 # This line constrains the intercept of openn_t2 to 0openn_t2 ~~ 0*openn_t2 # This fixes the variance of openn_t2 to 0d_openn_1 ~ 1 # This estimates the intercept of the change score openn_t1 ~ 1 # This estimates the intercept of openn_t1 d_openn_1 ~~ d_openn_1 # This estimates the variance of the change scores openn_t1 ~~ openn_t1 # This estimates the variance of the openn_t1 openn_t1 ~~ d_openn_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_openn_1 ~~ goals # estimates the covariance/correlation with the (latent) change goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) change goal variable to 0goals ~~ goals # This estimates the variance of the (latent) change goal variableopenn_curr_par1_t1 ~~ openn_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2openn_curr_par2_t1 ~~ openn_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2openn_curr_par3_t1 ~~ openn_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2openn_curr_par1_t1 ~~ res1*openn_curr_par1_t1 # This allows residual variance on indicator X1 at T1 openn_curr_par2_t1 ~~ res2*openn_curr_par2_t1 # This allows residual variance on indicator X2 at T1openn_curr_par3_t1 ~~ res3*openn_curr_par3_t1 # This allows residual variance on indicator X3 at T1openn_curr_par1_t2 ~~ res1*openn_curr_par1_t2 # This allows residual variance on indicator X1 at T2 openn_curr_par2_t2 ~~ res2*openn_curr_par2_t2 # This allows residual variance on indicator X2 at T2 openn_curr_par3_t2 ~~ res3*openn_curr_par3_t2 # This allows residual variance on indicator X3 at T2openn_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1openn_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1openn_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1openn_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2openn_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2openn_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb07_13_t1 ~~ sb07_13_t1sb07_14_t1 ~~ sb07_14_t1sb07_15_t1 ~~ sb07_15_t1sb07_13_t1 ~ 1sb07_14_t1 ~ 1sb07_15_t1 ~ 1'fit_mi_lcs_openn_curr_specif_hyp4 <-lavaan(mi_lcs_openn_curr_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_openn_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific change goal):
The correlation of specific, facet-level change goals with openness change score (current-personality) is not significantly different from zero, r = -0.13, p = 0.164.
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_openn_ideal_specif_hyp4 <-'openn_t1 =~ 1*openn_ideal_par1_t1 + lamb2*openn_ideal_par2_t1 + lamb3*openn_ideal_par3_t1 # This specifies the measurement model for openn_t1 openn_t2 =~ 1*openn_ideal_par1_t2 + lamb2*openn_ideal_par2_t2 + lamb3*openn_ideal_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadingsgoals =~ 1*sb07_13_t1 + sb07_14_t1 + sb07_15_t1 # latent change goal variable (three facets per trait)openn_t2 ~ 1*openn_t1 # This parameter regresses openn_t2 perfectly on openn_t1d_openn_1 =~ 1*openn_t2 # This defines the latent change score factor as measured perfectly by scores on openn_t2openn_t2 ~ 0*1 # This line constrains the intercept of openn_t2 to 0openn_t2 ~~ 0*openn_t2 # This fixes the variance of openn_t2 to 0d_openn_1 ~ 1 # This estimates the intercept of the change score openn_t1 ~ 1 # This estimates the intercept of openn_t1 d_openn_1 ~~ d_openn_1 # This estimates the variance of the change scores openn_t1 ~~ openn_t1 # This estimates the variance of the openn_t1 openn_t1 ~~ d_openn_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_openn_1 ~~ goals # estimates the covariance/correlation with the (latent) change goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) change goal variable to 0goals ~~ goals # This estimates the variance of the (latent) change goal variableopenn_ideal_par1_t1 ~~ openn_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2openn_ideal_par2_t1 ~~ openn_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2openn_ideal_par3_t1 ~~ openn_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2openn_ideal_par1_t1 ~~ res1*openn_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 openn_ideal_par2_t1 ~~ res2*openn_ideal_par2_t1 # This allows residual variance on indicator X2 at T1openn_ideal_par3_t1 ~~ res3*openn_ideal_par3_t1 # This allows residual variance on indicator X3 at T1openn_ideal_par1_t2 ~~ res1*openn_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 openn_ideal_par2_t2 ~~ res2*openn_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 openn_ideal_par3_t2 ~~ res3*openn_ideal_par3_t2 # This allows residual variance on indicator X3 at T2openn_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1openn_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1openn_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1openn_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2openn_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2openn_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb07_13_t1 ~~ sb07_13_t1sb07_14_t1 ~~ sb07_14_t1sb07_15_t1 ~~ sb07_15_t1sb07_13_t1 ~ 1sb07_14_t1 ~ 1sb07_15_t1 ~ 1'fit_mi_lcs_openn_ideal_specif_hyp4 <-lavaan(mi_lcs_openn_ideal_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_openn_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific change goal):
Correlation of specific, facet-level change goals with openness change score (ideal-personality) is not significantly different from zero, r = -0.017, p = 0.86.
6.4.2 Big Five facets
Run models for all facets with a template & loop:
Show the code
# create template:facet_template <-'facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)facet_t2 ~ 1*facet_t1 # This parameter regresses facet_t2 perfectly on facet_t1d_facet_1 =~ 1*facet_t2 # This defines the latent change score factor as measured perfectly by scores on facet_t2facet_t2 ~ 0*1 # This line constrains the intercept of facet_t2 to 0facet_t2 ~~ 0*facet_t2 # This fixes the variance of facet_t2 to 0d_facet_1 ~ 1 # This estimates the intercept of the change score facet_t1 ~ 1 # This estimates the intercept of facet_t1 d_facet_1 ~~ d_facet_1 # This estimates the variance of the change scores facet_t1 ~~ facet_t1 # This estimates the variance of facet_t1 facet_t1 ~~ d_facet_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_facet_1 ~~ ind_goal # estimates the covariance/correlation with change goal variableind1_t1 ~~ ind1_t2 # This allows residual covariance on indicator X1 across T1 and T2ind2_t1 ~~ ind2_t2 # This allows residual covariance on indicator X2 across T1 and T2ind3_t1 ~~ ind3_t2 # This allows residual covariance on indicator X3 across T1 and T2ind4_t1 ~~ ind4_t2 # This allows residual covariance on indicator X4 across T1 and T2ind1_t1 ~~ res1*ind1_t1 # This allows residual variance on indicator X1 at T1 ind2_t1 ~~ res2*ind2_t1 # This allows residual variance on indicator X2 at T1ind3_t1 ~~ res3*ind3_t1 # This allows residual variance on indicator X3 at T1ind4_t1 ~~ res4*ind4_t1 # This allows residual variance on indicator X4 at T1ind1_t2 ~~ res1*ind1_t2 # This allows residual variance on indicator X1 at T2 ind2_t2 ~~ res2*ind2_t2 # This allows residual variance on indicator X2 at T2 ind3_t2 ~~ res3*ind3_t2 # This allows residual variance on indicator X3 at T2ind4_t2 ~~ res4*ind4_t2 # This allows residual variance on indicator X4 at T2ind1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind2_t1 ~ m2*1 # This estimates the intercept of X2 at T1ind3_t1 ~ m3*1 # This estimates the intercept of X3 at T1ind4_t1 ~ m4*1 # This estimates the intercept of X4 at T1ind1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind2_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind3_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind4_t2 ~ m4*1 # This estimates the intercept of X4 at T2ind_goal ~~ ind_goalind_goal ~ 1'# loop across 15 facetsfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# loop across 2 BFI versions (combined pre&post current/ideal)for (j in5:length(bfi_versions)) { items =paste0(bfi_versions[[j]], item_nrs)# loop across 2 different goal operationalizations (sb06_01_t1 & sb07_XX_t1)for (k in1:2) {if (k==1) { goal_op ="sb06_01_t1" } else{ goal_op =paste0("sb07_", str_pad(i-5, 2, pad ="0"), "_t1") } template_filled <-str_replace_all(facet_template, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4],"ind_goal"= goal_op)) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')# save to environmentif (k==1) {eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[j], 6), "_hyp4")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[j], 6), "_hyp4")), facet_model_fit)) } else{eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[j], 6), "_specif_hyp4")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[j], 6), "_specif_hyp4")), facet_model_fit)) } } }}
6.4.2.1 Sociability - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
The correlation of the general change goal with the sociability change score (current-personality) is significantly different from zero, r = -0.065, p = 0.426.
6.4.2.2 Sociability - ideal-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of specific, facet-level change goals with sociability change score (current-personality) is significantly different from zero, r = -0.203, p = 0.033.
The correlation of specific, facet-level change goals with the anxiety change score (ideal-personality) is not significantly different from zero, r = -0.126, p = 0.221.
6.4.2.5 Assertiveness - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with assertiveness change score (current-personality) is not significantly different from zero, r = -0.069, p = 0.397.
6.4.2.6 Assertiveness - ideal-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of specific, facet-level change goals with assertiveness change score (current-personality) is significantly different from zero, r = -0.189, p = 0.033.
Correlation of specific, facet-level change goals with assertiveness change score (ideal-personality) is not significantly different from zero, r = 0.039, p = 0.686.
6.4.2.9 Energy - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of specific, facet-level change goals with energy change score (current-personality) is not significantly different from zero, r = 0.007, p = 0.941.
6.4.2.12 Energy - ideal-personality: specific, facet-level change goals
Results summary (sb07_xx_t1 = trait/facet specific change goal):
Correlation of specific, facet-level change goals with energy change score (ideal-personality) is not significantly different from zero, r = -0.016, p = 0.879.
6.4.2.13 Compassion - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of specific, facet-level change goals with compassion change score (current-personality) is not significantly different from zero, r = -0.031, p = 0.792.
Correlation of specific, facet-level change goals with compassion change score (ideal-personality) is not significantly different from zero, r = 0.06, p = 0.687.
6.4.2.17 Respectfulness - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with respectfulness change score (current-personality) is not significantly different from zero, r = 0.001, p = 0.99.
6.4.2.18 Respectfulness - ideal-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with respectfulness change score (ideal-personality) is not significantly different from zero, r = 0.036, p = 0.714.
Correlation of specific, facet-level change goals with respectfulness change score (current-personality) is not significantly different from zero, r = -0.15, p = 0.056.
The correlation of specific, facet-level change goals with the respectfulness change score (ideal-personality) is not significantly different from zero, r = -0.151, p = 0.112.
6.4.2.21 Trust - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of specific, facet-level change goals with trust change score (current-personality) is not significantly different from zero, r = 0.082, p = 0.46.
Correlation of specific, facet-level change goals with trust change score (ideal-personality) is not significantly different from zero, r = 0.182, p = 0.308.
6.4.2.25 Organization - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with organization change score (current-personality) is not significantly different from zero, r = 0.015, p = 0.871.
6.4.2.26 Organization - ideal-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of specific, facet-level change goals with organization change score (current-personality) is not significantly different from zero, r = -0.19, p = 0.059.
Correlation of specific, facet-level change goals with organization change score (ideal-personality) is not significantly different from zero, r = -0.115, p = 0.257.
6.4.2.29 Productiveness - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with productiveness change score (current-personality) is not significantly different from zero, r = 0.007, p = 0.94.
6.4.2.30 Productiveness - ideal-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with productiveness change score (ideal-personality) is not significantly different from zero, r = 0.082, p = 0.392.
Correlation of specific, facet-level change goals with productiveness change score (current-personality) is significantly different from zero, r = -0.224, p = 0.007.
Correlation of specific, facet-level change goals with productiveness change score (ideal-personality) is not significantly different from zero, r = -0.118, p = 0.157.
6.4.2.33 Responsibility - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with responsibility change score (current-personality) is not significantly different from zero, r = 0.044, p = 0.648.
6.4.2.34 Responsibility - ideal-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with responsibility change score (ideal-personality) is not significantly different from zero, r = 0.079, p = 0.424.
Correlation of specific, facet-level change goals with responsibility change score (current-personality) is not significantly different from zero, r = -0.161, p = 0.092.
Correlation of specific, facet-level change goals with responsibility change score (ideal-personality) is not significantly different from zero, r = -0.035, p = 0.729.
6.4.2.37 Anxiety - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
The correlation of specific, facet-level change goals with the anxiety change score (current-personality) is not significantly different from zero, r = 0.037, p = 0.75.
Correlation of specific, facet-level change goals with anxiety change score (ideal-personality) is not significantly different from zero, r = -0.055, p = 0.499.
6.4.2.41 Depression - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
The correlation of specific, facet-level change goals with the depression change score (current-personality) is significantly different from zero, r = 0.314, p = 0.001.
Correlation of specific, facet-level change goals with the depression change score (ideal-personality) is not significantly different from zero, r = 0.054, p = 0.417.
6.4.2.45 Volatility - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of specific, facet-level change goals with volatility change score (current-personality) is significantly different from zero, r = 0.162, p = 0.038.
Correlation of specific, facet-level change goals with volatility change score (ideal-personality) is not significantly different from zero, r = 0.094, p = 0.315.
6.4.2.49 Curiosity - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of specific, facet-level change goals with curiosity change score (current-personality) is not significantly different from zero, r = 0.082, p = 0.543.
Correlation of specific, facet-level change goals with curiosity change score (ideal-personality) is not significantly different from zero, r = -0.004, p = 0.978.
6.4.2.53 Aesthetic - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of general change goal with aesthetic change score (current-personality) is not significantly different from zero, r = -0.185, p = 0.083.
6.4.2.54 Aesthetic - ideal-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
(here there were some convergence problems with the standard model that the loop tried to fit)
mi_lcs_aesth_ideal_hyp4 <-'aesth_t1 =~ 1*bf06_05_t1 + lamb2*bf06_20_t1 + lamb3*bf06_35_t1 + lamb4*bf06_50_t1 # This specifies the measurement model for aesth at T1aesth_t2 =~ 1*bf06_05_t2 + lamb2*bf06_20_t2 + lamb3*bf06_35_t2 + lamb4*bf06_50_t2 # This specifies the measurement model for aesth at T2 (with equality constraints)aesth_t2 ~ 1*aesth_t1 # This parameter regresses aesth_t2 perfectly on aesth_t1d_aesth_1 =~ 1*aesth_t2 # This defines the latent change score factor as measured perfectly by scores on aesth_t2aesth_t2 ~ 0*1 # This line constrains the intercept of aesth_t2 to 0aesth_t2 ~~ 0*aesth_t2 # This fixes the variance of aesth_t2 to 0d_aesth_1 ~ 1 # This estimates the intercept of the change score aesth_t1 ~ 1 # This estimates the intercept of aesth_t1 d_aesth_1 ~~ d_aesth_1 # This estimates the variance of the change scores aesth_t1 ~~ aesth_t1 # This estimates the variance of aesth_t1 aesth_t1 ~~ d_aesth_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_aesth_1 ~~ sb06_01_t1 # estimates the covariance/correlation with change goal variablebf06_05_t1 ~~ bf06_05_t2 # This allows residual covariance on indicator X1 across T1 and T2bf06_20_t1 ~~ bf06_20_t2 # This allows residual covariance on indicator X2 across T1 and T2bf06_35_t1 ~~ bf06_35_t2 # This allows residual covariance on indicator X3 across T1 and T2bf06_50_t1 ~~ bf06_50_t2 # This allows residual covariance on indicator X4 across T1 and T2bf06_05_t1 ~~ res1*bf06_05_t1 # This allows residual variance on indicator X1 at T1 bf06_20_t1 ~~ res2*bf06_20_t1 # This allows residual variance on indicator X2 at T1bf06_35_t1 ~~ res3*bf06_35_t1 # This allows residual variance on indicator X3 at T1bf06_50_t1 ~~ res4*bf06_50_t1 # This allows residual variance on indicator X4 at T1bf06_05_t2 ~~ res1*bf06_05_t2 # This allows residual variance on indicator X1 at T2 bf06_20_t2 ~~ res2*bf06_20_t2 # This allows residual variance on indicator X2 at T2 bf06_35_t2 ~~ res3*bf06_35_t2 # This allows residual variance on indicator X3 at T2bf06_50_t2 ~~ res4*bf06_50_t2 # This allows residual variance on indicator X4 at T2bf06_05_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1bf06_20_t1 ~ m2*1 # This estimates the intercept of X2 at T1bf06_35_t1 ~ m3*1 # This estimates the intercept of X3 at T1bf06_50_t1 ~ m4*1 # This estimates the intercept of X4 at T1bf06_05_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2bf06_20_t2 ~ m2*1 # This estimates the intercept of X2 at T2bf06_35_t2 ~ m3*1 # This estimates the intercept of X3 at T2bf06_50_t2 ~ m4*1 # This estimates the intercept of X4 at T2sb06_01_t1 ~~ sb06_01_t1sb06_01_t1 ~ 1'fit_mi_lcs_aesth_ideal_hyp4 <-lavaan(mi_lcs_aesth_ideal_hyp4, data=df_sbsa2_wide_pers_sb %>%filter(!is.na(bf06_05_t1) &!is.na(bf06_05_t2)), estimator='WLSMV', fixed.x=FALSE, ordered="sb06_01_t1") # need to use a different optimizer here!# This model did not converge properly with FIML and missings. No problem with complete data, though. summary(fit_mi_lcs_aesth_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Correlation of specific, facet-level change goals with aesthetic change score (current-personality) is not significantly different from zero, r = -0.026, p = 0.771.
Correlation of specific, facet-level change goals with aesthetic change score (ideal-personality) is not significantly different from zero, r = -0.071, p = 0.479.
6.4.2.57 Imagination - current-personality: general change goals
Results summary (sb06_01_t1 = general change goal):
Correlation of specific, facet-level change goals with imagination change score (current-personality) is not significantly different from zero, r = -0.174, p = 0.06.
Correlation of specific, facet-level change goals with imagination change score (ideal-personality) is not significantly different from zero, r = -0.038, p = 0.658.
Results summary across the Big Five traits: covariance of the latent change score and change goal(s)
kable(df_table_hyp4[1:20, ], digits =3)
trait
ref
goal
estimate
std.all
statistic
p.value
extraversion
current
general
-0.026
-0.088
-1.090
0.276
extraversion
ideal
general
0.002
0.009
0.094
0.925
extraversion
current
specific
-0.036
-0.235
-1.264
0.206
extraversion
ideal
specific
0.012
0.113
0.812
0.417
agreeableness
current
general
0.022
0.110
1.383
0.167
agreeableness
ideal
general
0.009
0.032
0.438
0.662
agreeableness
current
specific
-0.010
-0.072
-0.728
0.467
agreeableness
ideal
specific
-0.003
-0.014
-0.150
0.880
conscientiousness
current
general
0.022
0.053
0.619
0.536
conscientiousness
ideal
general
0.011
0.043
0.538
0.590
conscientiousness
current
specific
-0.073
-0.213
-2.365
0.018
conscientiousness
ideal
specific
-0.023
-0.113
-1.255
0.209
neuroticism
current
general
-0.004
-0.009
-0.123
0.902
neuroticism
ideal
general
-0.045
-0.122
-1.665
0.096
neuroticism
current
specific
0.089
0.248
3.053
0.002
neuroticism
ideal
specific
0.018
0.068
0.847
0.397
openness
current
general
-0.016
-0.059
-0.692
0.489
openness
ideal
general
0.002
0.017
0.197
0.844
openness
current
specific
-0.021
-0.130
-1.392
0.164
openness
ideal
specific
-0.002
-0.017
-0.177
0.860
Two covariances/correlations that significantly differ from zero:
- Changes in current-level conscientiousness covary with the specific trait goals (latent factor of the three C facets).
- Changes in current-level neuroticism covary with the specific trait goals (latent factor of the three N facets).
Results summary across the Big Five facets: covariance of the latent change score and change goal(s)
kable(df_table_hyp4[21:80, ], digits =3)
trait
ref
goal
estimate
std.all
statistic
p.value
sociability
current
general
-0.025
-0.065
-0.796
0.426
sociability
ideal
general
0.042
0.153
1.531
0.126
sociability
current
specific
-0.082
-0.203
-2.128
0.033
sociability
ideal
specific
-0.033
-0.126
-1.224
0.221
assertiveness
current
general
-0.019
-0.069
-0.848
0.397
assertiveness
ideal
general
-0.013
-0.067
-0.629
0.530
assertiveness
current
specific
-0.052
-0.189
-2.134
0.033
assertiveness
ideal
specific
0.008
0.039
0.405
0.686
energy
current
general
-0.016
-0.103
-0.976
0.329
energy
ideal
general
0.000
-0.001
-0.008
0.993
energy
current
specific
0.001
0.007
0.074
0.941
energy
ideal
specific
-0.002
-0.016
-0.153
0.879
compassion
current
general
0.026
0.109
1.014
0.311
compassion
ideal
general
-0.029
-0.131
-1.012
0.312
compassion
current
specific
-0.008
-0.031
-0.264
0.792
compassion
ideal
specific
0.013
0.060
0.403
0.687
respectfulness
current
general
0.000
0.001
0.013
0.990
respectfulness
ideal
general
0.008
0.036
0.367
0.714
respectfulness
current
specific
-0.049
-0.150
-1.915
0.056
respectfulness
ideal
specific
-0.037
-0.151
-1.591
0.112
trust
current
general
0.035
0.118
1.089
0.276
trust
ideal
general
0.006
0.045
0.260
0.795
trust
current
specific
0.025
0.082
0.739
0.460
trust
ideal
specific
0.024
0.182
1.019
0.308
organization
current
general
0.007
0.015
0.163
0.871
organization
ideal
general
-0.004
-0.016
-0.165
0.869
organization
current
specific
-0.094
-0.190
-1.890
0.059
organization
ideal
specific
-0.033
-0.115
-1.133
0.257
productiveness
current
general
0.004
0.007
0.075
0.940
productiveness
ideal
general
0.021
0.082
0.856
0.392
productiveness
current
specific
-0.146
-0.224
-2.677
0.007
productiveness
ideal
specific
-0.029
-0.118
-1.415
0.157
responsibility
current
general
0.011
0.044
0.457
0.648
responsibility
ideal
general
0.015
0.079
0.800
0.424
responsibility
current
specific
-0.044
-0.161
-1.683
0.092
responsibility
ideal
specific
-0.007
-0.035
-0.346
0.729
anxiety
current
general
-0.020
-0.048
-0.419
0.675
anxiety
ideal
general
-0.046
-0.180
-1.907
0.056
anxiety
current
specific
0.016
0.037
0.319
0.750
anxiety
ideal
specific
-0.014
-0.055
-0.677
0.499
depression
current
general
0.027
0.072
0.841
0.400
depression
ideal
general
-0.016
-0.064
-0.822
0.411
depression
current
specific
0.136
0.314
3.386
0.001
depression
ideal
specific
0.013
0.054
0.811
0.417
volatility
current
general
0.015
0.026
0.354
0.724
volatility
ideal
general
-0.031
-0.097
-1.101
0.271
volatility
current
specific
0.096
0.162
2.071
0.038
volatility
ideal
specific
0.029
0.094
1.005
0.315
curiosity
current
general
-0.007
-0.036
-0.316
0.752
curiosity
ideal
general
0.026
0.189
1.322
0.186
curiosity
current
specific
0.015
0.082
0.608
0.543
curiosity
ideal
specific
-0.001
-0.004
-0.027
0.978
aesthetic
current
general
-0.018
-0.185
-1.735
0.083
aesthetic
ideal
general
0.001
0.160
1.324
0.186
aesthetic
current
specific
-0.003
-0.026
-0.292
0.771
aesthetic
ideal
specific
-0.001
-0.071
-0.708
0.479
imagination
current
general
-0.015
-0.042
-0.440
0.660
imagination
ideal
general
0.010
0.037
0.447
0.655
imagination
current
specific
-0.062
-0.174
-1.878
0.060
imagination
ideal
specific
-0.010
-0.038
-0.443
0.658
Looking at the facets, we see five covariances that significantly differ from zero (at p < .05):
- For sociability and assertiveness, changes in the current-level the specific facet change goal (both effects barely significant and in unexpected direction).
- For productiveness, changes in the current-level the specific facet change goal.
- Changes in current-level depression and volatility covary with the respective specific facet change goal.
6.5 H5: Acceptance goals and change in personality (current / ideal) in self-acceptance group
Not specifically preregistered for study 2 because we were foremost interested in the moderation hypothesis (H7 in prereg / H3 in paper) and thought that it was somewhat redundant with these models of correlations with the change score. I still ran the models for study 2 here (without the control group and for changes between T1 and T2) in case the comparison with study 1 is of interest.
In the self-acceptance group, there will be a correlation between acceptance goals and change in ideal-personality ratings but not change in current-personality ratings.
We will test this one domain/facet at a time. We will use both general continuous change goal score as well as trait-specific change goals. To test this hypothesis, we will estimate the mean-level difference across time for both current and ideal trait ratings using latent change models and correlate change goals with the change variable from those models.
Reshape and split data set by intervention group:
Show the code
# from T1 to T2df_sbsa2_wide_pers_sa <- df_sbsa2 %>%filter(rando=="Self-Acceptance"& time %in%c(1,2)) %>%arrange(pid, time) %>%select(pid, time, starts_with(c("sa07")), # facet-specific change goals sa06_01) %>%# general change goalpivot_wider(names_from = time,names_sep ="_t",values_from =c(starts_with("sa07"), sa06_01)) %>%select(-c(sa07_01_t2, sa07_02_t2, sa07_03_t2, sa07_04_t2, sa07_05_t2, sa07_06_t2, sa07_07_t2, sa07_08_t2, sa07_09_t2, sa07_10_t2, sa07_11_t2, sa07_12_t2, sa07_13_t2, sa07_14_t2, sa07_15_t2, sa06_01_t2))# standardize goal variables (better interpretation for when they are in SEM as a single manifest variable, not so much a problem when they form a latent scale)df_sbsa2_wide_pers_sa <- df_sbsa2_wide_pers_sa %>%mutate_at(c(colnames(df_sbsa2_wide_pers_sa)[-1]), ~(scale(.) %>% as.vector)) # colnames(df_sbsa2_wide_pers_sa)group_assign <- df_sbsa2 %>%select(pid, rando) %>%unique()df_sbsa2_wide_pers_sa <- df_sbsa2_wide_pers %>%left_join(group_assign) %>%filter(rando=="Self-Acceptance") %>%select(-rando, -ends_with("_t3")) %>%left_join(df_sbsa2_wide_pers_sa)# follow-up, from T2 to T3 (for later)df_sbsa2_wide_pers_sa_fu <- df_sbsa2 %>%filter(rando=="Self-Acceptance"& time %in%c(2,3)) %>%arrange(pid, time) %>%select(pid, time, starts_with(c("sa07")), # facet-specific change goals sa06_01) %>%# general change goalpivot_wider(names_from = time,names_sep ="_t",values_from =c(starts_with("sa07"), sa06_01)) %>%select(-c(sa07_01_t2, sa07_02_t2, sa07_03_t2, sa07_04_t2, sa07_05_t2, sa07_06_t2, sa07_07_t2, sa07_08_t2, sa07_09_t2, sa07_10_t2, sa07_11_t2, sa07_12_t2, sa07_13_t2, sa07_14_t2, sa07_15_t2, sa06_01_t2))# standardize goal variables (better interpretation for when they are in SEM as a single manifest variable, not so much a problem when they form a latent scale)df_sbsa2_wide_pers_sa_fu <- df_sbsa2_wide_pers_sa_fu %>%mutate_at(c(colnames(df_sbsa2_wide_pers_sa_fu)[-1]), ~(scale(.) %>% as.vector)) # colnames(df_sbsa2_wide_pers_sa)df_sbsa2_wide_pers_sa_fu <- df_sbsa2_wide_pers %>%left_join(group_assign) %>%filter(rando=="Self-Acceptance"&!is.na(valid_t2)) %>%select(-rando, -ends_with("_t1")) %>%left_join(df_sbsa2_wide_pers_sa_fu)
6.5.1 Big Five traits
6.5.1.1 Extraversion - current-personality: general acceptance goals
Fit model:
Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_extra_curr_hyp5 <-'extra_t1 =~ 1*extra_curr_par1_t1 + lamb2*extra_curr_par2_t1 + lamb3*extra_curr_par3_t1 # This specifies the measurement model for extra_t1 extra_t2 =~ 1*extra_curr_par1_t2 + lamb2*extra_curr_par2_t2 + lamb3*extra_curr_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadingsextra_t2 ~ 1*extra_t1 # This parameter regresses extra_t2 perfectly on extra_t1d_extra_1 =~ 1*extra_t2 # This defines the latent change score factor as measured perfectly by scores on extra_t2extra_t2 ~ 0*1 # This line constrains the intercept of extra_t2 to 0extra_t2 ~~ 0*extra_t2 # This fixes the variance of extra_t2 to 0d_extra_1 ~ 1 # This estimates the intercept of the change score extra_t1 ~ 1 # This estimates the intercept of extra_t1 d_extra_1 ~~ d_extra_1 # This estimates the variance of the change scores extra_t1 ~~ extra_t1 # This estimates the variance of the extra_t1 extra_t1 ~~ d_extra_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_extra_1 ~~ sa06_01_t1 # estimates the covariance/correlation with acceptance goal variableextra_curr_par1_t1 ~~ extra_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2extra_curr_par2_t1 ~~ extra_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2extra_curr_par3_t1 ~~ extra_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2extra_curr_par1_t1 ~~ res1*extra_curr_par1_t1 # This allows residual variance on indicator X1 at T1 extra_curr_par2_t1 ~~ res2*extra_curr_par2_t1 # This allows residual variance on indicator X2 at T1extra_curr_par3_t1 ~~ res3*extra_curr_par3_t1 # This allows residual variance on indicator X3 at T1extra_curr_par1_t2 ~~ res1*extra_curr_par1_t2 # This allows residual variance on indicator X1 at T2 extra_curr_par2_t2 ~~ res2*extra_curr_par2_t2 # This allows residual variance on indicator X2 at T2 extra_curr_par3_t2 ~~ res3*extra_curr_par3_t2 # This allows residual variance on indicator X3 at T2extra_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1extra_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1extra_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1extra_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2extra_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2extra_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa06_01_t1 ~~ sa06_01_t1sa06_01_t1 ~ 1'fit_mi_lcs_extra_curr_hyp5 <-lavaan(mi_lcs_extra_curr_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_extra_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sa06_01_t1 = general acceptance goal):
The correlation of general acceptance goal with the extraversion change score (current-personality) is not significantly different from zero, r = 0.035, p = 0.656.
6.5.1.2 Extraversion - ideal-personality: general acceptance goals
Fit model:
Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_extra_ideal_hyp5 <-'extra_t1 =~ 1*extra_ideal_par1_t1 + lamb2*extra_ideal_par2_t1 + lamb3*extra_ideal_par3_t1 # This specifies the measurement model for extra_t1 extra_t2 =~ 1*extra_ideal_par1_t2 + lamb2*extra_ideal_par2_t2 + lamb3*extra_ideal_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadingsextra_t2 ~ 1*extra_t1 # This parameter regresses extra_t2 perfectly on extra_t1d_extra_1 =~ 1*extra_t2 # This defines the latent change score factor as measured perfectly by scores on extra_t2extra_t2 ~ 0*1 # This line constrains the intercept of extra_t2 to 0extra_t2 ~~ 0*extra_t2 # This fixes the variance of extra_t2 to 0d_extra_1 ~ 1 # This estimates the intercept of the change score extra_t1 ~ 1 # This estimates the intercept of extra_t1 d_extra_1 ~~ d_extra_1 # This estimates the variance of the change scores extra_t1 ~~ extra_t1 # This estimates the variance of the extra_t1 extra_t1 ~~ d_extra_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_extra_1 ~~ sa06_01_t1 # estimates the covariance/correlation with acceptance goal variableextra_ideal_par1_t1 ~~ extra_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2extra_ideal_par2_t1 ~~ extra_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2extra_ideal_par3_t1 ~~ extra_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2extra_ideal_par1_t1 ~~ res1*extra_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 extra_ideal_par2_t1 ~~ res2*extra_ideal_par2_t1 # This allows residual variance on indicator X2 at T1extra_ideal_par3_t1 ~~ res3*extra_ideal_par3_t1 # This allows residual variance on indicator X3 at T1extra_ideal_par1_t2 ~~ res1*extra_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 extra_ideal_par2_t2 ~~ res2*extra_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 extra_ideal_par3_t2 ~~ res3*extra_ideal_par3_t2 # This allows residual variance on indicator X3 at T2extra_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1extra_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1extra_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1extra_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2extra_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2extra_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa06_01_t1 ~~ sa06_01_t1sa06_01_t1 ~ 1'fit_mi_lcs_extra_ideal_hyp5 <-lavaan(mi_lcs_extra_ideal_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_extra_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with extraversion change score (ideal-personality) is not significantly different from zero, r = 0.07, p = 0.437.
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_extra_curr_specif_hyp5 <-'extra_t1 =~ 1*extra_curr_par1_t1 + lamb2*extra_curr_par2_t1 + lamb3*extra_curr_par3_t1 # This specifies the measurement model for extra_t1 extra_t2 =~ 1*extra_curr_par1_t2 + lamb2*extra_curr_par2_t2 + lamb3*extra_curr_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadingsgoals =~ 1*sa07_01_t1 + sa07_02_t1 + sa07_03_t1 # latent acceptance goal variable (three facets per trait)extra_t2 ~ 1*extra_t1 # This parameter regresses extra_t2 perfectly on extra_t1d_extra_1 =~ 1*extra_t2 # This defines the latent change score factor as measured perfectly by scores on extra_t2extra_t2 ~ 0*1 # This line constrains the intercept of extra_t2 to 0extra_t2 ~~ 0*extra_t2 # This fixes the variance of extra_t2 to 0d_extra_1 ~ 1 # This estimates the intercept of the change score extra_t1 ~ 1 # This estimates the intercept of extra_t1 d_extra_1 ~~ d_extra_1 # This estimates the variance of the change scores extra_t1 ~~ extra_t1 # This estimates the variance of the extra_t1 extra_t1 ~~ d_extra_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_extra_1 ~~ goals # estimates the covariance/correlation with the (latent) acceptance goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) acceptance goal variable to 0goals ~~ goals # This estimates the variance of the (latent) acceptance goal variableextra_curr_par1_t1 ~~ extra_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2extra_curr_par2_t1 ~~ extra_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2extra_curr_par3_t1 ~~ extra_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2extra_curr_par1_t1 ~~ res1*extra_curr_par1_t1 # This allows residual variance on indicator X1 at T1 extra_curr_par2_t1 ~~ res2*extra_curr_par2_t1 # This allows residual variance on indicator X2 at T1extra_curr_par3_t1 ~~ res3*extra_curr_par3_t1 # This allows residual variance on indicator X3 at T1extra_curr_par1_t2 ~~ res1*extra_curr_par1_t2 # This allows residual variance on indicator X1 at T2 extra_curr_par2_t2 ~~ res2*extra_curr_par2_t2 # This allows residual variance on indicator X2 at T2 extra_curr_par3_t2 ~~ res3*extra_curr_par3_t2 # This allows residual variance on indicator X3 at T2extra_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1extra_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1extra_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1extra_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2extra_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2extra_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa07_01_t1 ~~ sa07_01_t1sa07_02_t1 ~~ sa07_02_t1sa07_03_t1 ~~ sa07_03_t1sa07_01_t1 ~ 1sa07_02_t1 ~ 1sa07_03_t1 ~ 1'fit_mi_lcs_extra_curr_specif_hyp5 <-lavaan(mi_lcs_extra_curr_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_extra_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific acceptance goal):
Correlation of specific, facet-level acceptance goals with extraversion change score (current-personality) is not significantly different from zero, r = -0.147, p = 0.237.
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_extra_ideal_specif_hyp5 <-'extra_t1 =~ 1*extra_ideal_par1_t1 + lamb2*extra_ideal_par2_t1 + lamb3*extra_ideal_par3_t1 # This specifies the measurement model for extra_t1 extra_t2 =~ 1*extra_ideal_par1_t2 + lamb2*extra_ideal_par2_t2 + lamb3*extra_ideal_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadingsgoals =~ 1*sa07_01_t1 + sa07_02_t1 + sa07_03_t1 # latent acceptance goal variable (three facets per trait)extra_t2 ~ 1*extra_t1 # This parameter regresses extra_t2 perfectly on extra_t1d_extra_1 =~ 1*extra_t2 # This defines the latent change score factor as measured perfectly by scores on extra_t2extra_t2 ~ 0*1 # This line constrains the intercept of extra_t2 to 0extra_t2 ~~ 0*extra_t2 # This fixes the variance of extra_t2 to 0d_extra_1 ~ 1 # This estimates the intercept of the change score extra_t1 ~ 1 # This estimates the intercept of extra_t1 d_extra_1 ~~ d_extra_1 # This estimates the variance of the change scores extra_t1 ~~ extra_t1 # This estimates the variance of the extra_t1 extra_t1 ~~ d_extra_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_extra_1 ~~ goals # estimates the covariance/correlation with the (latent) acceptance goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) acceptance goal variable to 0goals ~~ goals # This estimates the variance of the (latent) acceptance goal variableextra_ideal_par1_t1 ~~ extra_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2extra_ideal_par2_t1 ~~ extra_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2extra_ideal_par3_t1 ~~ extra_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2extra_ideal_par1_t1 ~~ res1*extra_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 extra_ideal_par2_t1 ~~ res2*extra_ideal_par2_t1 # This allows residual variance on indicator X2 at T1extra_ideal_par3_t1 ~~ res3*extra_ideal_par3_t1 # This allows residual variance on indicator X3 at T1extra_ideal_par1_t2 ~~ res1*extra_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 extra_ideal_par2_t2 ~~ res2*extra_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 extra_ideal_par3_t2 ~~ res3*extra_ideal_par3_t2 # This allows residual variance on indicator X3 at T2extra_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1extra_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1extra_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1extra_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2extra_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2extra_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa07_01_t1 ~~ sa07_01_t1sa07_02_t1 ~~ sa07_02_t1sa07_03_t1 ~~ sa07_03_t1sa07_01_t1 ~ 1sa07_02_t1 ~ 1sa07_03_t1 ~ 1'fit_mi_lcs_extra_ideal_specif_hyp5 <-lavaan(mi_lcs_extra_ideal_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_extra_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific acceptance goal):
Correlation of specific, facet-level acceptance goals with extraversion change score (ideal-personality) is not significantly different from zero, r = -0.048, p = 0.658.
6.5.1.5 Agreeableness - current-personality: general acceptance goals
Fit model:
Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_agree_curr_hyp5 <-'agree_t1 =~ 1*agree_curr_par1_t1 + lamb2*agree_curr_par2_t1 + lamb3*agree_curr_par3_t1 # This specifies the measurement model for agree_t1agree_t2 =~ 1*agree_curr_par1_t2 + lamb2*agree_curr_par2_t2 + lamb3*agree_curr_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadingsagree_t2 ~ 1*agree_t1 # This parameter regresses agree_t2 perfectly on agree_t1d_agree_1 =~ 1*agree_t2 # This defines the latent change score factor as measured perfectly by scores on agree_t2agree_t2 ~ 0*1 # This line constrains the intercept of agree_t2 to 0agree_t2 ~~ 0*agree_t2 # This fixes the variance of agree_t2 to 0d_agree_1 ~ 1 # This estimates the intercept of the change score agree_t1 ~ 1 # This estimates the intercept of agree_t1 d_agree_1 ~~ d_agree_1 # This estimates the variance of the change scores agree_t1 ~~ agree_t1 # This estimates the variance of the agree_t1 agree_t1 ~~ d_agree_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_agree_1 ~~ sa06_01_t1 # estimates the covariance/correlation with acceptance goal variableagree_curr_par1_t1 ~~ agree_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2agree_curr_par2_t1 ~~ agree_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2agree_curr_par3_t1 ~~ agree_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2agree_curr_par1_t1 ~~ res1*agree_curr_par1_t1 # This allows residual variance on indicator X1 at T1 agree_curr_par2_t1 ~~ res2*agree_curr_par2_t1 # This allows residual variance on indicator X2 at T1agree_curr_par3_t1 ~~ res3*agree_curr_par3_t1 # This allows residual variance on indicator X3 at T1agree_curr_par1_t2 ~~ res1*agree_curr_par1_t2 # This allows residual variance on indicator X1 at T2 agree_curr_par2_t2 ~~ res2*agree_curr_par2_t2 # This allows residual variance on indicator X2 at T2 agree_curr_par3_t2 ~~ res3*agree_curr_par3_t2 # This allows residual variance on indicator X3 at T2agree_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1agree_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1agree_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1agree_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2agree_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2agree_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa06_01_t1 ~~ sa06_01_t1sa06_01_t1 ~ 1'fit_mi_lcs_agree_curr_hyp5 <-lavaan(mi_lcs_agree_curr_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_agree_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with agreeableness change score (current-personality) is not significantly different from zero, r = -0.042, p = 0.545.
6.5.1.6 Agreeableness - ideal-personality: general acceptance goals
Fit model:
Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_agree_ideal_hyp5 <-'agree_t1 =~ 1*agree_ideal_par1_t1 + lamb2*agree_ideal_par2_t1 + lamb3*agree_ideal_par3_t1 # This specifies the measurement model for agree_t1 agree_t2 =~ 1*agree_ideal_par1_t2 + lamb2*agree_ideal_par2_t2 + lamb3*agree_ideal_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadingsagree_t2 ~ 1*agree_t1 # This parameter regresses agree_t2 perfectly on agree_t1d_agree_1 =~ 1*agree_t2 # This defines the latent change score factor as measured perfectly by scores on agree_t2agree_t2 ~ 0*1 # This line constrains the intercept of agree_t2 to 0agree_t2 ~~ 0*agree_t2 # This fixes the variance of agree_t2 to 0d_agree_1 ~ 1 # This estimates the intercept of the change score agree_t1 ~ 1 # This estimates the intercept of agree_t1 d_agree_1 ~~ d_agree_1 # This estimates the variance of the change scores agree_t1 ~~ agree_t1 # This estimates the variance of the agree_t1 agree_t1 ~~ d_agree_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_agree_1 ~~ sa06_01_t1 # estimates the covariance/correlation with acceptance goal variableagree_ideal_par1_t1 ~~ agree_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2agree_ideal_par2_t1 ~~ agree_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2agree_ideal_par3_t1 ~~ agree_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2agree_ideal_par1_t1 ~~ res1*agree_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 agree_ideal_par2_t1 ~~ res2*agree_ideal_par2_t1 # This allows residual variance on indicator X2 at T1agree_ideal_par3_t1 ~~ res3*agree_ideal_par3_t1 # This allows residual variance on indicator X3 at T1agree_ideal_par1_t2 ~~ res1*agree_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 agree_ideal_par2_t2 ~~ res2*agree_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 agree_ideal_par3_t2 ~~ res3*agree_ideal_par3_t2 # This allows residual variance on indicator X3 at T2agree_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1agree_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1agree_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1agree_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2agree_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2agree_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa06_01_t1 ~~ sa06_01_t1sa06_01_t1 ~ 1'fit_mi_lcs_agree_ideal_hyp5 <-lavaan(mi_lcs_agree_ideal_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_agree_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with agreeableness change score (ideal-personality) is not significantly different from zero, r = -0.001, p = 0.984.
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_agree_curr_specif_hyp5 <-'agree_t1 =~ 1*agree_curr_par1_t1 + lamb2*agree_curr_par2_t1 + lamb3*agree_curr_par3_t1 # This specifies the measurement model for agree_t1agree_t2 =~ 1*agree_curr_par1_t2 + lamb2*agree_curr_par2_t2 + lamb3*agree_curr_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadingsgoals =~ 1*sa07_04_t1 + sa07_05_t1 + sa07_06_t1 # latent acceptance goal variable (three facets per trait)agree_t2 ~ 1*agree_t1 # This parameter regresses agree_t2 perfectly on agree_t1d_agree_1 =~ 1*agree_t2 # This defines the latent change score factor as measured perfectly by scores on agree_t2agree_t2 ~ 0*1 # This line constrains the intercept of agree_t2 to 0agree_t2 ~~ 0*agree_t2 # This fixes the variance of agree_t2 to 0d_agree_1 ~ 1 # This estimates the intercept of the change score agree_t1 ~ 1 # This estimates the intercept of agree_t1 d_agree_1 ~~ d_agree_1 # This estimates the variance of the change scores agree_t1 ~~ agree_t1 # This estimates the variance of the agree_t1 agree_t1 ~~ d_agree_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_agree_1 ~~ goals # estimates the covariance/correlation with the (latent) acceptance goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) acceptance goal variable to 0goals ~~ goals # This estimates the variance of the (latent) acceptance goal variableagree_curr_par1_t1 ~~ agree_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2agree_curr_par2_t1 ~~ agree_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2agree_curr_par3_t1 ~~ agree_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2agree_curr_par1_t1 ~~ res1*agree_curr_par1_t1 # This allows residual variance on indicator X1 at T1 agree_curr_par2_t1 ~~ res2*agree_curr_par2_t1 # This allows residual variance on indicator X2 at T1agree_curr_par3_t1 ~~ res3*agree_curr_par3_t1 # This allows residual variance on indicator X3 at T1agree_curr_par1_t2 ~~ res1*agree_curr_par1_t2 # This allows residual variance on indicator X1 at T2 agree_curr_par2_t2 ~~ res2*agree_curr_par2_t2 # This allows residual variance on indicator X2 at T2 agree_curr_par3_t2 ~~ res3*agree_curr_par3_t2 # This allows residual variance on indicator X3 at T2agree_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1agree_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1agree_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1agree_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2agree_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2agree_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa07_04_t1 ~~ sa07_04_t1sa07_05_t1 ~~ sa07_05_t1sa07_06_t1 ~~ sa07_06_t1sa07_04_t1 ~ 1sa07_05_t1 ~ 1sa07_06_t1 ~ 1'fit_mi_lcs_agree_curr_specif_hyp5 <-lavaan(mi_lcs_agree_curr_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_agree_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific acceptance goal):
Correlation of specific, facet-level acceptance goals with agreeableness change score (current-personality) is significantly different from zero, r = -0.296, p = 0.017.
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_agree_ideal_specif_hyp5 <-'agree_t1 =~ 1*agree_ideal_par1_t1 + lamb2*agree_ideal_par2_t1 + lamb3*agree_ideal_par3_t1 # This specifies the measurement model for agree_t1 agree_t2 =~ 1*agree_ideal_par1_t2 + lamb2*agree_ideal_par2_t2 + lamb3*agree_ideal_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadingsgoals =~ 1*sa07_04_t1 + sa07_05_t1 + sa07_06_t1 # latent acceptance goal variable (three facets per trait)agree_t2 ~ 1*agree_t1 # This parameter regresses agree_t2 perfectly on agree_t1d_agree_1 =~ 1*agree_t2 # This defines the latent change score factor as measured perfectly by scores on agree_t2agree_t2 ~ 0*1 # This line constrains the intercept of agree_t2 to 0agree_t2 ~~ 0*agree_t2 # This fixes the variance of agree_t2 to 0d_agree_1 ~ 1 # This estimates the intercept of the change score agree_t1 ~ 1 # This estimates the intercept of agree_t1 d_agree_1 ~~ d_agree_1 # This estimates the variance of the change scores agree_t1 ~~ agree_t1 # This estimates the variance of the agree_t1 agree_t1 ~~ d_agree_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_agree_1 ~~ goals # estimates the covariance/correlation with the (latent) acceptance goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) acceptance goal variable to 0goals ~~ goals # This estimates the variance of the (latent) acceptance goal variableagree_ideal_par1_t1 ~~ agree_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2agree_ideal_par2_t1 ~~ agree_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2agree_ideal_par3_t1 ~~ agree_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2agree_ideal_par1_t1 ~~ res1*agree_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 agree_ideal_par2_t1 ~~ res2*agree_ideal_par2_t1 # This allows residual variance on indicator X2 at T1agree_ideal_par3_t1 ~~ res3*agree_ideal_par3_t1 # This allows residual variance on indicator X3 at T1agree_ideal_par1_t2 ~~ res1*agree_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 agree_ideal_par2_t2 ~~ res2*agree_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 agree_ideal_par3_t2 ~~ res3*agree_ideal_par3_t2 # This allows residual variance on indicator X3 at T2agree_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1agree_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1agree_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1agree_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2agree_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2agree_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa07_04_t1 ~~ sa07_04_t1sa07_05_t1 ~~ sa07_05_t1sa07_06_t1 ~~ sa07_06_t1sa07_04_t1 ~ 1sa07_05_t1 ~ 1sa07_06_t1 ~ 1'fit_mi_lcs_agree_ideal_specif_hyp5 <-lavaan(mi_lcs_agree_ideal_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_agree_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific acceptance goal):
Correlation of specific, facet-level acceptance goals with agreeableness change score (ideal-personality) is not significantly different from zero, r = -0.094, p = 0.277.
6.5.1.9 Conscientiousness - current-personality: general acceptance goals
Fit model:
Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_consc_curr_hyp5 <-'consc_t1 =~ 1*consc_curr_par1_t1 + lamb2*consc_curr_par2_t1 + lamb3*consc_curr_par3_t1 # This specifies the measurement model for consc_t1 consc_t2 =~ 1*consc_curr_par1_t2 + lamb2*consc_curr_par2_t2 + lamb3*consc_curr_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadingsconsc_t2 ~ 1*consc_t1 # This parameter regresses consc_t2 perfectly on consc_t1d_consc_1 =~ 1*consc_t2 # This defines the latent change score factor as measured perfectly by scores on consc_t2consc_t2 ~ 0*1 # This line constrains the intercept of consc_t2 to 0consc_t2 ~~ 0*consc_t2 # This fixes the variance of consc_t2 to 0d_consc_1 ~ 1 # This estimates the intercept of the change score consc_t1 ~ 1 # This estimates the intercept of consc_t1 d_consc_1 ~~ d_consc_1 # This estimates the variance of the change scores consc_t1 ~~ consc_t1 # This estimates the variance of the consc_t1 consc_t1 ~~ d_consc_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_consc_1 ~~ sa06_01_t1 # estimates the covariance/correlation with acceptance goal variableconsc_curr_par1_t1 ~~ consc_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2consc_curr_par2_t1 ~~ consc_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2consc_curr_par3_t1 ~~ consc_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2consc_curr_par1_t1 ~~ res1*consc_curr_par1_t1 # This allows residual variance on indicator X1 at T1 consc_curr_par2_t1 ~~ res2*consc_curr_par2_t1 # This allows residual variance on indicator X2 at T1consc_curr_par3_t1 ~~ res3*consc_curr_par3_t1 # This allows residual variance on indicator X3 at T1consc_curr_par1_t2 ~~ res1*consc_curr_par1_t2 # This allows residual variance on indicator X1 at T2 consc_curr_par2_t2 ~~ res2*consc_curr_par2_t2 # This allows residual variance on indicator X2 at T2 consc_curr_par3_t2 ~~ res3*consc_curr_par3_t2 # This allows residual variance on indicator X3 at T2consc_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1consc_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1consc_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1consc_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2consc_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2consc_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa06_01_t1 ~~ sa06_01_t1sa06_01_t1 ~ 1'fit_mi_lcs_consc_curr_hyp5 <-lavaan(mi_lcs_consc_curr_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_consc_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with conscientiousness change score (current-personality) is not significantly different from zero, r = -0.101, p = 0.156.
6.5.1.10 Conscientiousness - ideal-personality: general acceptance goals
Fit model:
Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_consc_ideal_hyp5 <-'consc_t1 =~ 1*consc_ideal_par1_t1 + lamb2*consc_ideal_par2_t1 + lamb3*consc_ideal_par3_t1 # This specifies the measurement model for consc_t1consc_t2 =~ 1*consc_ideal_par1_t2 + lamb2*consc_ideal_par2_t2 + lamb3*consc_ideal_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadingsconsc_t2 ~ 1*consc_t1 # This parameter regresses consc_t2 perfectly on consc_t1d_consc_1 =~ 1*consc_t2 # This defines the latent change score factor as measured perfectly by scores on consc_t2consc_t2 ~ 0*1 # This line constrains the intercept of consc_t2 to 0consc_t2 ~~ 0*consc_t2 # This fixes the variance of consc_t2 to 0d_consc_1 ~ 1 # This estimates the intercept of the change score consc_t1 ~ 1 # This estimates the intercept of consc_t1 d_consc_1 ~~ d_consc_1 # This estimates the variance of the change scores consc_t1 ~~ consc_t1 # This estimates the variance of the consc_t1 consc_t1 ~~ d_consc_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_consc_1 ~~ sa06_01_t1 # estimates the covariance/correlation with acceptance goal variableconsc_ideal_par1_t1 ~~ consc_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2consc_ideal_par2_t1 ~~ consc_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2consc_ideal_par3_t1 ~~ consc_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2consc_ideal_par1_t1 ~~ res1*consc_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 consc_ideal_par2_t1 ~~ res2*consc_ideal_par2_t1 # This allows residual variance on indicator X2 at T1consc_ideal_par3_t1 ~~ res3*consc_ideal_par3_t1 # This allows residual variance on indicator X3 at T1consc_ideal_par1_t2 ~~ res1*consc_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 consc_ideal_par2_t2 ~~ res2*consc_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 consc_ideal_par3_t2 ~~ res3*consc_ideal_par3_t2 # This allows residual variance on indicator X3 at T2consc_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1consc_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1consc_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1consc_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2consc_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2consc_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa06_01_t1 ~~ sa06_01_t1sa06_01_t1 ~ 1'fit_mi_lcs_consc_ideal_hyp5 <-lavaan(mi_lcs_consc_ideal_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_consc_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with conscientiousness change score (ideal-personality) is not significantly different from zero, r = 0.06, p = 0.297.
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_consc_curr_specif_hyp5 <-'consc_t1 =~ 1*consc_curr_par1_t1 + lamb2*consc_curr_par2_t1 + lamb3*consc_curr_par3_t1 # This specifies the measurement model for consc_t1 consc_t2 =~ 1*consc_curr_par1_t2 + lamb2*consc_curr_par2_t2 + lamb3*consc_curr_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadingsgoals =~ 1*sa07_07_t1 + sa07_08_t1 + sa07_09_t1 # latent acceptance goal variable (three facets per trait)consc_t2 ~ 1*consc_t1 # This parameter regresses consc_t2 perfectly on consc_t1d_consc_1 =~ 1*consc_t2 # This defines the latent change score factor as measured perfectly by scores on consc_t2consc_t2 ~ 0*1 # This line constrains the intercept of consc_t2 to 0consc_t2 ~~ 0*consc_t2 # This fixes the variance of consc_t2 to 0d_consc_1 ~ 1 # This estimates the intercept of the change score consc_t1 ~ 1 # This estimates the intercept of consc_t1 d_consc_1 ~~ d_consc_1 # This estimates the variance of the change scores consc_t1 ~~ consc_t1 # This estimates the variance of the consc_t1 consc_t1 ~~ d_consc_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_consc_1 ~~ goals # estimates the covariance/correlation with the (latent) acceptance goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) acceptance goal variable to 0goals ~~ goals # This estimates the variance of the (latent) acceptance goal variableconsc_curr_par1_t1 ~~ consc_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2consc_curr_par2_t1 ~~ consc_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2consc_curr_par3_t1 ~~ consc_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2consc_curr_par1_t1 ~~ res1*consc_curr_par1_t1 # This allows residual variance on indicator X1 at T1 consc_curr_par2_t1 ~~ res2*consc_curr_par2_t1 # This allows residual variance on indicator X2 at T1consc_curr_par3_t1 ~~ res3*consc_curr_par3_t1 # This allows residual variance on indicator X3 at T1consc_curr_par1_t2 ~~ res1*consc_curr_par1_t2 # This allows residual variance on indicator X1 at T2 consc_curr_par2_t2 ~~ res2*consc_curr_par2_t2 # This allows residual variance on indicator X2 at T2 consc_curr_par3_t2 ~~ res3*consc_curr_par3_t2 # This allows residual variance on indicator X3 at T2consc_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1consc_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1consc_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1consc_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2consc_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2consc_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa07_07_t1 ~~ sa07_07_t1sa07_08_t1 ~~ sa07_08_t1sa07_09_t1 ~~ sa07_09_t1sa07_07_t1 ~ 1sa07_08_t1 ~ 1sa07_09_t1 ~ 1'fit_mi_lcs_consc_curr_specif_hyp5 <-lavaan(mi_lcs_consc_curr_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_consc_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific acceptance goal):
The correlation of specific, facet-level acceptance goals with the conscientiousness change score (current-personality) is not significantly different from zero, r = -0.159, p = 0.088.
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_consc_ideal_specif_hyp5 <-'consc_t1 =~ 1*consc_ideal_par1_t1 + lamb2*consc_ideal_par2_t1 + lamb3*consc_ideal_par3_t1 # This specifies the measurement model for consc_t1consc_t2 =~ 1*consc_ideal_par1_t2 + lamb2*consc_ideal_par2_t2 + lamb3*consc_ideal_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadingsgoals =~ 1*sa07_07_t1 + sa07_08_t1 + sa07_09_t1 # latent acceptance goal variable (three facets per trait)consc_t2 ~ 1*consc_t1 # This parameter regresses consc_t2 perfectly on consc_t1d_consc_1 =~ 1*consc_t2 # This defines the latent change score factor as measured perfectly by scores on consc_t2consc_t2 ~ 0*1 # This line constrains the intercept of consc_t2 to 0consc_t2 ~~ 0*consc_t2 # This fixes the variance of consc_t2 to 0d_consc_1 ~ 1 # This estimates the intercept of the change score consc_t1 ~ 1 # This estimates the intercept of consc_t1 d_consc_1 ~~ d_consc_1 # This estimates the variance of the change scores consc_t1 ~~ consc_t1 # This estimates the variance of the consc_t1 consc_t1 ~~ d_consc_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_consc_1 ~~ goals # estimates the covariance/correlation with the (latent) acceptance goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) acceptance goal variable to 0goals ~~ goals # This estimates the variance of the (latent) acceptance goal variableconsc_ideal_par1_t1 ~~ consc_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2consc_ideal_par2_t1 ~~ consc_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2consc_ideal_par3_t1 ~~ consc_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2consc_ideal_par1_t1 ~~ res1*consc_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 consc_ideal_par2_t1 ~~ res2*consc_ideal_par2_t1 # This allows residual variance on indicator X2 at T1consc_ideal_par3_t1 ~~ res3*consc_ideal_par3_t1 # This allows residual variance on indicator X3 at T1consc_ideal_par1_t2 ~~ res1*consc_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 consc_ideal_par2_t2 ~~ res2*consc_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 consc_ideal_par3_t2 ~~ res3*consc_ideal_par3_t2 # This allows residual variance on indicator X3 at T2consc_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1consc_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1consc_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1consc_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2consc_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2consc_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa07_07_t1 ~~ sa07_07_t1sa07_08_t1 ~~ sa07_08_t1sa07_09_t1 ~~ sa07_09_t1sa07_07_t1 ~ 1sa07_08_t1 ~ 1sa07_09_t1 ~ 1'fit_mi_lcs_consc_ideal_specif_hyp5 <-lavaan(mi_lcs_consc_ideal_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_consc_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific acceptance goal):
The correlation of specific, facet-level acceptance goals with the conscientiousness change score (ideal-personality) is (barely) significantly different from zero, r = -0.148, p = 0.042.
6.5.1.13 Neuroticism - current-personality: general acceptance goals
Fit model:
Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_neuro_curr_hyp5 <-'neuro_t1 =~ 1*neuro_curr_par1_t1 + lamb2*neuro_curr_par2_t1 + lamb3*neuro_curr_par3_t1 # This specifies the measurement model for neuro_t1 neuro_t2 =~ 1*neuro_curr_par1_t2 + lamb2*neuro_curr_par2_t2 + lamb3*neuro_curr_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadingsneuro_t2 ~ 1*neuro_t1 # This parameter regresses neuro_t2 perfectly on neuro_t1d_neuro_1 =~ 1*neuro_t2 # This defines the latent change score factor as measured perfectly by scores on neuro_t2neuro_t2 ~ 0*1 # This line constrains the intercept of neuro_t2 to 0neuro_t2 ~~ 0*neuro_t2 # This fixes the variance of neuro_t2 to 0d_neuro_1 ~ 1 # This estimates the intercept of the change score neuro_t1 ~ 1 # This estimates the intercept of neuro_t1 d_neuro_1 ~~ d_neuro_1 # This estimates the variance of the change scores neuro_t1 ~~ neuro_t1 # This estimates the variance of the neuro_t1 neuro_t1 ~~ d_neuro_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_neuro_1 ~~ sa06_01_t1 # estimates the covariance/correlation with acceptance goal variableneuro_curr_par1_t1 ~~ neuro_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2neuro_curr_par2_t1 ~~ neuro_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2neuro_curr_par3_t1 ~~ neuro_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2neuro_curr_par1_t1 ~~ res1*neuro_curr_par1_t1 # This allows residual variance on indicator X1 at T1 neuro_curr_par2_t1 ~~ res2*neuro_curr_par2_t1 # This allows residual variance on indicator X2 at T1neuro_curr_par3_t1 ~~ res3*neuro_curr_par3_t1 # This allows residual variance on indicator X3 at T1neuro_curr_par1_t2 ~~ res1*neuro_curr_par1_t2 # This allows residual variance on indicator X1 at T2 neuro_curr_par2_t2 ~~ res2*neuro_curr_par2_t2 # This allows residual variance on indicator X2 at T2 neuro_curr_par3_t2 ~~ res3*neuro_curr_par3_t2 # This allows residual variance on indicator X3 at T2neuro_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1neuro_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1neuro_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1neuro_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2neuro_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2neuro_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa06_01_t1 ~~ sa06_01_t1sa06_01_t1 ~ 1'fit_mi_lcs_neuro_curr_hyp5 <-lavaan(mi_lcs_neuro_curr_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_neuro_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with neuroticism change score (current-personality) is not significantly different from zero, r = -0.07, p = 0.279.
6.5.1.14 Neuroticism - ideal-personality: general acceptance goals
Fit model:
Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_neuro_ideal_hyp5 <-'neuro_t1 =~ 1*neuro_ideal_par1_t1 + lamb2*neuro_ideal_par2_t1 + lamb3*neuro_ideal_par3_t1 # This specifies the measurement model for neuro_t1 neuro_t2 =~ 1*neuro_ideal_par1_t2 + lamb2*neuro_ideal_par2_t2 + lamb3*neuro_ideal_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadingsneuro_t2 ~ 1*neuro_t1 # This parameter regresses neuro_t2 perfectly on neuro_t1d_neuro_1 =~ 1*neuro_t2 # This defines the latent change score factor as measured perfectly by scores on neuro_t2neuro_t2 ~ 0*1 # This line constrains the intercept of neuro_t2 to 0neuro_t2 ~~ 0*neuro_t2 # This fixes the variance of neuro_t2 to 0d_neuro_1 ~ 1 # This estimates the intercept of the change score neuro_t1 ~ 1 # This estimates the intercept of neuro_t1 d_neuro_1 ~~ d_neuro_1 # This estimates the variance of the change scores neuro_t1 ~~ neuro_t1 # This estimates the variance of the neuro_t1 neuro_t1 ~~ d_neuro_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_neuro_1 ~~ sa06_01_t1 # estimates the covariance/correlation with acceptance goal variableneuro_ideal_par1_t1 ~~ neuro_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2neuro_ideal_par2_t1 ~~ neuro_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2neuro_ideal_par3_t1 ~~ neuro_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2neuro_ideal_par1_t1 ~~ res1*neuro_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 neuro_ideal_par2_t1 ~~ res2*neuro_ideal_par2_t1 # This allows residual variance on indicator X2 at T1neuro_ideal_par3_t1 ~~ res3*neuro_ideal_par3_t1 # This allows residual variance on indicator X3 at T1neuro_ideal_par1_t2 ~~ res1*neuro_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 neuro_ideal_par2_t2 ~~ res2*neuro_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 neuro_ideal_par3_t2 ~~ res3*neuro_ideal_par3_t2 # This allows residual variance on indicator X3 at T2neuro_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1neuro_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1neuro_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1neuro_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2neuro_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2neuro_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa06_01_t1 ~~ sa06_01_t1sa06_01_t1 ~ 1'fit_mi_lcs_neuro_ideal_hyp5 <-lavaan(mi_lcs_neuro_ideal_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_neuro_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with neuroticism change score (ideal-personality) is not significantly different from zero, r = -0.05, p = 0.496.
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_neuro_curr_specif_hyp5 <-'neuro_t1 =~ 1*neuro_curr_par1_t1 + lamb2*neuro_curr_par2_t1 + lamb3*neuro_curr_par3_t1 # This specifies the measurement model for neuro_t1 neuro_t2 =~ 1*neuro_curr_par1_t2 + lamb2*neuro_curr_par2_t2 + lamb3*neuro_curr_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadingsgoals =~ 1*sa07_10_t1 + sa07_11_t1 + sa07_12_t1 # latent acceptance goal variable (three facets per trait)neuro_t2 ~ 1*neuro_t1 # This parameter regresses neuro_t2 perfectly on neuro_t1d_neuro_1 =~ 1*neuro_t2 # This defines the latent change score factor as measured perfectly by scores on neuro_t2neuro_t2 ~ 0*1 # This line constrains the intercept of neuro_t2 to 0neuro_t2 ~~ 0*neuro_t2 # This fixes the variance of neuro_t2 to 0d_neuro_1 ~ 1 # This estimates the intercept of the change score neuro_t1 ~ 1 # This estimates the intercept of neuro_t1 d_neuro_1 ~~ d_neuro_1 # This estimates the variance of the change scores neuro_t1 ~~ neuro_t1 # This estimates the variance of the neuro_t1 neuro_t1 ~~ d_neuro_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_neuro_1 ~~ goals # estimates the covariance/correlation with the (latent) acceptance goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) acceptance goal variable to 0goals ~~ goals # This estimates the variance of the (latent) acceptance goal variableneuro_curr_par1_t1 ~~ neuro_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2neuro_curr_par2_t1 ~~ neuro_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2neuro_curr_par3_t1 ~~ neuro_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2neuro_curr_par1_t1 ~~ res1*neuro_curr_par1_t1 # This allows residual variance on indicator X1 at T1 neuro_curr_par2_t1 ~~ res2*neuro_curr_par2_t1 # This allows residual variance on indicator X2 at T1neuro_curr_par3_t1 ~~ res3*neuro_curr_par3_t1 # This allows residual variance on indicator X3 at T1neuro_curr_par1_t2 ~~ res1*neuro_curr_par1_t2 # This allows residual variance on indicator X1 at T2 neuro_curr_par2_t2 ~~ res2*neuro_curr_par2_t2 # This allows residual variance on indicator X2 at T2 neuro_curr_par3_t2 ~~ res3*neuro_curr_par3_t2 # This allows residual variance on indicator X3 at T2neuro_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1neuro_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1neuro_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1neuro_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2neuro_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2neuro_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa07_10_t1 ~~ sa07_10_t1sa07_11_t1 ~~ sa07_11_t1sa07_12_t1 ~~ sa07_12_t1sa07_10_t1 ~ 1sa07_11_t1 ~ 1sa07_12_t1 ~ 1'fit_mi_lcs_neuro_curr_specif_hyp5 <-lavaan(mi_lcs_neuro_curr_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_neuro_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific acceptance goal):
Correlation of specific, facet-level acceptance goals with neuroticism change score (current-personality) is (barely) significantly different from zero, r = 0.178, p = 0.034.
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_neuro_ideal_specif_hyp5 <-'neuro_t1 =~ 1*neuro_ideal_par1_t1 + lamb2*neuro_ideal_par2_t1 + lamb3*neuro_ideal_par3_t1 # This specifies the measurement model for neuro_t1 neuro_t2 =~ 1*neuro_ideal_par1_t2 + lamb2*neuro_ideal_par2_t2 + lamb3*neuro_ideal_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadingsgoals =~ 1*sa07_10_t1 + sa07_11_t1 + sa07_12_t1 # latent acceptance goal variable (three facets per trait)neuro_t2 ~ 1*neuro_t1 # This parameter regresses neuro_t2 perfectly on neuro_t1d_neuro_1 =~ 1*neuro_t2 # This defines the latent change score factor as measured perfectly by scores on neuro_t2neuro_t2 ~ 0*1 # This line constrains the intercept of neuro_t2 to 0neuro_t2 ~~ 0*neuro_t2 # This fixes the variance of neuro_t2 to 0d_neuro_1 ~ 1 # This estimates the intercept of the change score neuro_t1 ~ 1 # This estimates the intercept of neuro_t1 d_neuro_1 ~~ d_neuro_1 # This estimates the variance of the change scores neuro_t1 ~~ neuro_t1 # This estimates the variance of the neuro_t1 neuro_t1 ~~ d_neuro_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_neuro_1 ~~ goals # estimates the covariance/correlation with the (latent) acceptance goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) acceptance goal variable to 0goals ~~ goals # This estimates the variance of the (latent) acceptance goal variableneuro_ideal_par1_t1 ~~ neuro_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2neuro_ideal_par2_t1 ~~ neuro_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2neuro_ideal_par3_t1 ~~ neuro_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2neuro_ideal_par1_t1 ~~ res1*neuro_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 neuro_ideal_par2_t1 ~~ res2*neuro_ideal_par2_t1 # This allows residual variance on indicator X2 at T1neuro_ideal_par3_t1 ~~ res3*neuro_ideal_par3_t1 # This allows residual variance on indicator X3 at T1neuro_ideal_par1_t2 ~~ res1*neuro_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 neuro_ideal_par2_t2 ~~ res2*neuro_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 neuro_ideal_par3_t2 ~~ res3*neuro_ideal_par3_t2 # This allows residual variance on indicator X3 at T2neuro_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1neuro_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1neuro_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1neuro_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2neuro_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2neuro_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa07_10_t1 ~~ sa07_10_t1sa07_11_t1 ~~ sa07_11_t1sa07_12_t1 ~~ sa07_12_t1sa07_10_t1 ~ 1sa07_11_t1 ~ 1sa07_12_t1 ~ 1'fit_mi_lcs_neuro_ideal_specif_hyp5 <-lavaan(mi_lcs_neuro_ideal_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_neuro_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific acceptance goal):
The correlation of specific, facet-level acceptance goals with the neuroticism change score (ideal-personality) is not significantly different from zero, r = 0.009, p = 0.908.
6.5.1.17 Openness - current-personality: general acceptance goals
Fit model:
Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_openn_curr_hyp5 <-'openn_t1 =~ 1*openn_curr_par1_t1 + lamb2*openn_curr_par2_t1 + lamb3*openn_curr_par3_t1 # This specifies the measurement model for openn_t1openn_t2 =~ 1*openn_curr_par1_t2 + lamb2*openn_curr_par2_t2 + lamb3*openn_curr_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadingsopenn_t2 ~ 1*openn_t1 # This parameter regresses openn_t2 perfectly on openn_t1d_openn_1 =~ 1*openn_t2 # This defines the latent change score factor as measured perfectly by scores on openn_t2openn_t2 ~ 0*1 # This line constrains the intercept of openn_t2 to 0openn_t2 ~~ 0*openn_t2 # This fixes the variance of openn_t2 to 0d_openn_1 ~ 1 # This estimates the intercept of the change score openn_t1 ~ 1 # This estimates the intercept of openn_t1 d_openn_1 ~~ d_openn_1 # This estimates the variance of the change scores openn_t1 ~~ openn_t1 # This estimates the variance of the openn_t1 openn_t1 ~~ d_openn_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_openn_1 ~~ sa06_01_t1 # estimates the covariance/correlation with acceptance goal variableopenn_curr_par1_t1 ~~ openn_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2openn_curr_par2_t1 ~~ openn_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2openn_curr_par3_t1 ~~ openn_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2openn_curr_par1_t1 ~~ res1*openn_curr_par1_t1 # This allows residual variance on indicator X1 at T1 openn_curr_par2_t1 ~~ res2*openn_curr_par2_t1 # This allows residual variance on indicator X2 at T1openn_curr_par3_t1 ~~ res3*openn_curr_par3_t1 # This allows residual variance on indicator X3 at T1openn_curr_par1_t2 ~~ res1*openn_curr_par1_t2 # This allows residual variance on indicator X1 at T2 openn_curr_par2_t2 ~~ res2*openn_curr_par2_t2 # This allows residual variance on indicator X2 at T2 openn_curr_par3_t2 ~~ res3*openn_curr_par3_t2 # This allows residual variance on indicator X3 at T2openn_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1openn_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1openn_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1openn_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2openn_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2openn_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa06_01_t1 ~~ sa06_01_t1sa06_01_t1 ~ 1'fit_mi_lcs_openn_curr_hyp5 <-lavaan(mi_lcs_openn_curr_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_openn_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with openness change score (current-personality) is not significantly different from zero, r = -0.065, p = 0.427.
6.5.1.18 Openness - ideal-personality: general acceptance goals
Fit model:
Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_openn_ideal_hyp5 <-'openn_t1 =~ 1*openn_ideal_par1_t1 + lamb2*openn_ideal_par2_t1 + lamb3*openn_ideal_par3_t1 # This specifies the measurement model for openn_t1 openn_t2 =~ 1*openn_ideal_par1_t2 + lamb2*openn_ideal_par2_t2 + lamb3*openn_ideal_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadingsopenn_t2 ~ 1*openn_t1 # This parameter regresses openn_t2 perfectly on openn_t1d_openn_1 =~ 1*openn_t2 # This defines the latent change score factor as measured perfectly by scores on openn_t2openn_t2 ~ 0*1 # This line constrains the intercept of openn_t2 to 0openn_t2 ~~ 0*openn_t2 # This fixes the variance of openn_t2 to 0d_openn_1 ~ 1 # This estimates the intercept of the change score openn_t1 ~ 1 # This estimates the intercept of openn_t1 d_openn_1 ~~ d_openn_1 # This estimates the variance of the change scores openn_t1 ~~ openn_t1 # This estimates the variance of the openn_t1 openn_t1 ~~ d_openn_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_openn_1 ~~ sa06_01_t1 # estimates the covariance/correlation with acceptance goal variableopenn_ideal_par1_t1 ~~ openn_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2openn_ideal_par2_t1 ~~ openn_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2openn_ideal_par3_t1 ~~ openn_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2openn_ideal_par1_t1 ~~ res1*openn_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 openn_ideal_par2_t1 ~~ res2*openn_ideal_par2_t1 # This allows residual variance on indicator X2 at T1openn_ideal_par3_t1 ~~ res3*openn_ideal_par3_t1 # This allows residual variance on indicator X3 at T1openn_ideal_par1_t2 ~~ res1*openn_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 openn_ideal_par2_t2 ~~ res2*openn_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 openn_ideal_par3_t2 ~~ res3*openn_ideal_par3_t2 # This allows residual variance on indicator X3 at T2openn_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1openn_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1openn_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1openn_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2openn_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2openn_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa06_01_t1 ~~ sa06_01_t1sa06_01_t1 ~ 1'fit_mi_lcs_openn_ideal_hyp5 <-lavaan(mi_lcs_openn_ideal_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing="fiml")summary(fit_mi_lcs_openn_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (sa06_01_t1 = general acceptance goal):
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_openn_curr_specif_hyp5 <-'openn_t1 =~ 1*openn_curr_par1_t1 + lamb2*openn_curr_par2_t1 + lamb3*openn_curr_par3_t1 # This specifies the measurement model for openn_t1openn_t2 =~ 1*openn_curr_par1_t2 + lamb2*openn_curr_par2_t2 + lamb3*openn_curr_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadingsgoals =~ 1*sa07_13_t1 + sa07_14_t1 + sa07_15_t1 # latent acceptance goal variable (three facets per trait)openn_t2 ~ 1*openn_t1 # This parameter regresses openn_t2 perfectly on openn_t1d_openn_1 =~ 1*openn_t2 # This defines the latent change score factor as measured perfectly by scores on openn_t2openn_t2 ~ 0*1 # This line constrains the intercept of openn_t2 to 0openn_t2 ~~ 0*openn_t2 # This fixes the variance of openn_t2 to 0d_openn_1 ~ 1 # This estimates the intercept of the change score openn_t1 ~ 1 # This estimates the intercept of openn_t1 d_openn_1 ~~ d_openn_1 # This estimates the variance of the change scores openn_t1 ~~ openn_t1 # This estimates the variance of the openn_t1 openn_t1 ~~ d_openn_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_openn_1 ~~ goals # estimates the covariance/correlation with the (latent) acceptance goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) acceptance goal variable to 0goals ~~ goals # This estimates the variance of the (latent) acceptance goal variableopenn_curr_par1_t1 ~~ openn_curr_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2openn_curr_par2_t1 ~~ openn_curr_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2openn_curr_par3_t1 ~~ openn_curr_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2openn_curr_par1_t1 ~~ res1*openn_curr_par1_t1 # This allows residual variance on indicator X1 at T1 openn_curr_par2_t1 ~~ res2*openn_curr_par2_t1 # This allows residual variance on indicator X2 at T1openn_curr_par3_t1 ~~ res3*openn_curr_par3_t1 # This allows residual variance on indicator X3 at T1openn_curr_par1_t2 ~~ res1*openn_curr_par1_t2 # This allows residual variance on indicator X1 at T2 openn_curr_par2_t2 ~~ res2*openn_curr_par2_t2 # This allows residual variance on indicator X2 at T2 openn_curr_par3_t2 ~~ res3*openn_curr_par3_t2 # This allows residual variance on indicator X3 at T2openn_curr_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1openn_curr_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1openn_curr_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1openn_curr_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2openn_curr_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2openn_curr_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa07_13_t1 ~~ sa07_13_t1sa07_14_t1 ~~ sa07_14_t1sa07_15_t1 ~~ sa07_15_t1sa07_13_t1 ~ 1sa07_14_t1 ~ 1sa07_15_t1 ~ 1'fit_mi_lcs_openn_curr_specif_hyp5 <-lavaan(mi_lcs_openn_curr_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')summary(fit_mi_lcs_openn_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific acceptance goal):
Correlation of specific, facet-level acceptance goals with openness change score (current-personality) is not significantly different from zero, r = -0.126, p = 0.272.
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:# Fit the multiple indicator univariate latent change score modelmi_lcs_openn_ideal_specif_hyp5 <-'openn_t1 =~ 1*openn_ideal_par1_t1 + lamb2*openn_ideal_par2_t1 + lamb3*openn_ideal_par3_t1 # This specifies the measurement model for openn_t1 openn_t2 =~ 1*openn_ideal_par1_t2 + lamb2*openn_ideal_par2_t2 + lamb3*openn_ideal_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadingsgoals =~ 1*sa07_13_t1 + sa07_14_t1 + sa07_15_t1 # latent acceptance goal variable (three facets per trait)openn_t2 ~ 1*openn_t1 # This parameter regresses openn_t2 perfectly on openn_t1d_openn_1 =~ 1*openn_t2 # This defines the latent change score factor as measured perfectly by scores on openn_t2openn_t2 ~ 0*1 # This line constrains the intercept of openn_t2 to 0openn_t2 ~~ 0*openn_t2 # This fixes the variance of openn_t2 to 0d_openn_1 ~ 1 # This estimates the intercept of the change score openn_t1 ~ 1 # This estimates the intercept of openn_t1 d_openn_1 ~~ d_openn_1 # This estimates the variance of the change scores openn_t1 ~~ openn_t1 # This estimates the variance of the openn_t1 openn_t1 ~~ d_openn_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_openn_1 ~~ goals # estimates the covariance/correlation with the (latent) acceptance goal variablegoals ~ 0*1 # This fixes the intercept of the (latent) acceptance goal variable to 0goals ~~ goals # This estimates the variance of the (latent) acceptance goal variableopenn_ideal_par1_t1 ~~ openn_ideal_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2openn_ideal_par2_t1 ~~ openn_ideal_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2openn_ideal_par3_t1 ~~ openn_ideal_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2openn_ideal_par1_t1 ~~ res1*openn_ideal_par1_t1 # This allows residual variance on indicator X1 at T1 openn_ideal_par2_t1 ~~ res2*openn_ideal_par2_t1 # This allows residual variance on indicator X2 at T1openn_ideal_par3_t1 ~~ res3*openn_ideal_par3_t1 # This allows residual variance on indicator X3 at T1openn_ideal_par1_t2 ~~ res1*openn_ideal_par1_t2 # This allows residual variance on indicator X1 at T2 openn_ideal_par2_t2 ~~ res2*openn_ideal_par2_t2 # This allows residual variance on indicator X2 at T2 openn_ideal_par3_t2 ~~ res3*openn_ideal_par3_t2 # This allows residual variance on indicator X3 at T2openn_ideal_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1openn_ideal_par2_t1 ~ m2*1 # This estimates the intercept of X2 at T1openn_ideal_par3_t1 ~ m3*1 # This estimates the intercept of X3 at T1openn_ideal_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2openn_ideal_par2_t2 ~ m2*1 # This estimates the intercept of X2 at T2openn_ideal_par3_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa07_13_t1 ~~ sa07_13_t1sa07_14_t1 ~~ sa07_14_t1sa07_15_t1 ~~ sa07_15_t1sa07_13_t1 ~ 1sa07_14_t1 ~ 1sa07_15_t1 ~ 1'fit_mi_lcs_openn_ideal_specif_hyp5 <-lavaan(mi_lcs_openn_ideal_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing ="fiml")summary(fit_mi_lcs_openn_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)
Results summary (goals = trait/facet specific acceptance goal):
The correlation of specific, facet-level acceptance goals with the openness change score (ideal-personality) is (barely) significantly different from zero, r = -0.14, p = 0.036.
6.5.2 Big Five facets
Run models for all facets with a template & loop:
Show the code
# create template:facet_template <-'facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)facet_t2 ~ 1*facet_t1 # This parameter regresses facet_t2 perfectly on facet_t1d_facet_1 =~ 1*facet_t2 # This defines the latent change score factor as measured perfectly by scores on facet_t2facet_t2 ~ 0*1 # This line constrains the intercept of facet_t2 to 0facet_t2 ~~ 0*facet_t2 # This fixes the variance of facet_t2 to 0d_facet_1 ~ 1 # This estimates the intercept of the change score facet_t1 ~ 1 # This estimates the intercept of facet_t1 d_facet_1 ~~ d_facet_1 # This estimates the variance of the change scores facet_t1 ~~ facet_t1 # This estimates the variance of facet_t1 facet_t1 ~~ d_facet_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionald_facet_1 ~~ ind_goal # estimates the covariance/correlation with acceptance goal variableind1_t1 ~~ ind1_t2 # This allows residual covariance on indicator X1 across T1 and T2ind2_t1 ~~ ind2_t2 # This allows residual covariance on indicator X2 across T1 and T2ind3_t1 ~~ ind3_t2 # This allows residual covariance on indicator X3 across T1 and T2ind4_t1 ~~ ind4_t2 # This allows residual covariance on indicator X4 across T1 and T2ind1_t1 ~~ res1*ind1_t1 # This allows residual variance on indicator X1 at T1 ind2_t1 ~~ res2*ind2_t1 # This allows residual variance on indicator X2 at T1ind3_t1 ~~ res3*ind3_t1 # This allows residual variance on indicator X3 at T1ind4_t1 ~~ res4*ind4_t1 # This allows residual variance on indicator X4 at T1ind1_t2 ~~ res1*ind1_t2 # This allows residual variance on indicator X1 at T2 ind2_t2 ~~ res2*ind2_t2 # This allows residual variance on indicator X2 at T2 ind3_t2 ~~ res3*ind3_t2 # This allows residual variance on indicator X3 at T2ind4_t2 ~~ res4*ind4_t2 # This allows residual variance on indicator X4 at T2ind1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind2_t1 ~ m2*1 # This estimates the intercept of X2 at T1ind3_t1 ~ m3*1 # This estimates the intercept of X3 at T1ind4_t1 ~ m4*1 # This estimates the intercept of X4 at T1ind1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind2_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind3_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind4_t2 ~ m4*1 # This estimates the intercept of X4 at T2ind_goal ~~ ind_goalind_goal ~ 1'# loop across 15 facetsfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# loop across 2 BFI versions (combined pre&post current/ideal)for (j in5:length(bfi_versions)) { items =paste0(bfi_versions[[j]], item_nrs)# loop across 2 different goal operationalizations (sa06_01_t1 & sa07_XX_t1)for (k in1:2) {if (k==1) { goal_op ="sa06_01_t1" } else{ goal_op =paste0("sa07_", str_pad(i-5, 2, pad ="0"), "_t1") } template_filled <-str_replace_all(facet_template, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4],"ind_goal"= goal_op)) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')# save to environmentif (k==1) {eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[j], 6), "_hyp5")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[j], 6), "_hyp5")), facet_model_fit)) } else{eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[j], 6), "_specif_hyp5")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[j], 6), "_specif_hyp5")), facet_model_fit)) } } }}
6.5.2.1 Sociability - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
The correlation of the general acceptance goal with the sociability change score (current-personality) is not significantly different from zero, r = 0.083, p = 0.379.
6.5.2.2 Sociability - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with sociability change score (ideal-personality) is not significantly different from zero, r = -0.118, p = 0.458.
Correlation of specific, facet-level acceptance goals with sociability change score (current-personality) is not significantly different from zero, r = -0.108, p = 0.199.
Correlation of specific, facet-level acceptance goals with anxiety change score (ideal-personality) is not significantly different from zero, r = -0.239, p = 0.082.
6.5.2.5 Assertiveness - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with assertiveness change score (current-personality) is not significantly different from zero, r = -0.04, p = 0.648.
6.5.2.6 Assertiveness - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with assertiveness change score (ideal-personality) is not significantly different from zero, r = 0.239, p = 0.068.
Correlation of specific, facet-level acceptance goals with assertiveness change score (current-personality) is not significantly different from zero, r = -0.017, p = 0.87.
Correlation of specific, facet-level acceptance goals with assertiveness change score (ideal-personality) is not significantly different from zero, r = 0.272, p = 0.069.
6.5.2.9 Energy - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of specific, facet-level acceptance goals with energy change score (current-personality) is not significantly different from zero, r = -0.146, p = 0.157.
6.5.2.12 Energy - ideal-personality: specific, facet-level acceptance goals
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
Correlation of specific, facet-level acceptance goals with energy change score (ideal-personality) is not significantly different from zero, r = 0.032, p = 0.69.
6.5.2.13 Compassion - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with compassion change score (current-personality) is not significantly different from zero, r = -0.111, p = 0.216.
6.5.2.14 Compassion - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with compassion change score (ideal-personality) is not significantly different from zero, r = -0.014, p = 0.89.
Correlation of specific, facet-level acceptance goals with compassion change score (current-personality) is (barely) significantly different from zero, r = -0.226, p = 0.04.
Correlation of specific, facet-level acceptance goals with compassion change score (ideal-personality) is not significantly different from zero, r = -0.111, p = 0.3.
6.5.2.17 Respectfulness - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with respectfulness change score (current-personality) is not significantly different from zero, r = -0.022, p = 0.758.
6.5.2.18 Respectfulness - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with respectfulness change score (ideal-personality) is not significantly different from zero, r = -0.029, p = 0.834.
Correlation of specific, facet-level acceptance goals with respectfulness change score (current-personality) is significantly different from zero, r = -0.402, p = 0.
Correlation of specific, facet-level acceptance goals with respectfulness change score (ideal-personality) is not significantly different from zero, r = -0.152, p = 0.325.
6.5.2.21 Trust - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of specific, facet-level acceptance goals with trust change score (current-personality) is not significantly different from zero, r = 0.193, p = 0.268.
Correlation of specific, facet-level acceptance goals with trust change score (ideal-personality) is not significantly different from zero, r = 0.066, p = 0.529.
6.5.2.25 Organization - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with organization change score (current-personality) is (barely) significantly different from zero, r = -0.178, p = 0.032.
6.5.2.26 Organization - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with organization change score (ideal-personality) is not significantly different from zero, r = -0.013, p = 0.889.
The correlation of specific, facet-level acceptance goals with the organization change score (current-personality) is significantly different from zero, r = -0.286, p = 0.001.
Correlation of specific, facet-level acceptance goals with organization change score (ideal-personality) is not significantly different from zero, r = -0.134, p = 0.208.
6.5.2.29 Productiveness - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with productiveness change score (current-personality) is not significantly different from zero, r = -0.09, p = 0.267.
6.5.2.30 Productiveness - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with productiveness change score (ideal-personality) is not significantly different from zero, r = 0.027, p = 0.708.
Correlation of specific, facet-level acceptance goals with productiveness change score (current-personality) is not significantly different from zero, r = -0.177, p = 0.067.
Correlation of specific, facet-level acceptance goals with productiveness change score (ideal-personality) is not significantly different from zero, r = -0.153, p = 0.074.
6.5.2.33 Responsibility - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with responsibility change score (current-personality) is not significantly different from zero, r = -0.058, p = 0.504.
6.5.2.34 Responsibility - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with responsibility change score (ideal-personality) is not significantly different from zero, r = 0.143, p = 0.092.
The correlation of specific, facet-level acceptance goals with the responsibility change score (current-personality) is not significantly different from zero, r = -0.173, p = 0.132.
Correlation of specific, facet-level acceptance goals with responsibility change score (ideal-personality) is not significantly different from zero, r = -0.152, p = 0.091.
6.5.2.37 Anxiety - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with anxiety change score (current-personality) is not significantly different from zero, r = -0.074, p = 0.437.
6.5.2.38 Anxiety - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of specific, facet-level acceptance goals with anxiety change score (current-personality) is significantly different from zero, r = 0.258, p = 0.008.
Correlation of specific, facet-level acceptance goals with anxiety change score (ideal-personality) is not significantly different from zero, r = 0.035, p = 0.698.
6.5.2.41 Depression - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with depression change score (current-personality) is not significantly different from zero, r = -0.024, p = 0.744.
6.5.2.42 Depression - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with depression change score (ideal-personality) is not significantly different from zero, r = -0.01, p = 0.916.
Correlation of specific, facet-level acceptance goals with depression change score (current-personality) is not significantly different from zero, r = 0.149, p = 0.065.
Correlation of specific, facet-level acceptance goals with depression change score (ideal-personality) is not significantly different from zero, r = 0.021, p = 0.795.
6.5.2.45 Volatility - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with volatility change score (current-personality) is not significantly different from zero, r = 0.041, p = 0.657.
6.5.2.46 Volatility - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
The correlation of general acceptance goal with the volatility change score (ideal-personality) is not significantly different from zero, r = -0.123, p = 0.261.
Correlation of specific, facet-level acceptance goals with volatility change score (current-personality) is not significantly different from zero, r = 0.084, p = 0.43.
Correlation of specific, facet-level acceptance goals with volatility change score (ideal-personality) is not significantly different from zero, r = -0.037, p = 0.701.
6.5.2.49 Curiosity - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with curiosity change score (current-personality) is not significantly different from zero, r = -0.005, p = 0.978.
6.5.2.50 Curiosity - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with curiosity change score (ideal-personality) is not significantly different from zero, r = -0.175, p = 0.082.
The correlation of specific, facet-level acceptance goals with the curiosity change score (current-personality) is not significantly different from zero, r = 0.149, p = 0.413.
Correlation of specific, facet-level acceptance goals with curiosity change score (ideal-personality) is not significantly different from zero, r = -0.07, p = 0.517.
6.5.2.53 Aesthetic - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with aesthetic change score (current-personality) is not significantly different from zero, r = -0.038, p = 0.701.
6.5.2.54 Aesthetic - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with aesthetic change score (ideal-personality) is not significantly different from zero, r = -0.055, p = 0.474.
Correlation of specific, facet-level acceptance goals with aesthetic change score (current-personality) is (barely) significantly different from zero, r = -0.226, p = 0.047.
Correlation of specific, facet-level acceptance goals with aesthetic change score (ideal-personality) is not significantly different from zero, r = -0.089, p = 0.277.
6.5.2.57 Imagination - current-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with imagination change score (current-personality) is not significantly different from zero, r = -0.034, p = 0.715.
6.5.2.58 Imagination - ideal-personality: general acceptance goals
Results summary (sa06_01_t1 = general acceptance goal):
Correlation of general acceptance goal with imagination change score (ideal-personality) is not significantly different from zero, r = -0.129, p = 0.096.
Correlation of specific, facet-level acceptance goals with imagination change score (current-personality) is not significantly different from zero, r = -0.182, p = 0.09.
Correlation of specific, facet-level acceptance goals with imagination change score (ideal-personality) is not significantly different from zero, r = -0.159, p = 0.07.
Results summary across the Big Five traits: covariance of the latent change score and acceptance goal(s)
kable(df_table_hyp5[1:20, ], digits =3)
trait
ref
goal
estimate
std.all
statistic
p.value
extraversion
current
general
0.009
0.035
0.446
0.656
extraversion
ideal
general
0.018
0.070
0.778
0.437
extraversion
current
specific
-0.026
-0.147
-1.181
0.237
extraversion
ideal
specific
-0.008
-0.048
-0.443
0.658
agreeableness
current
general
-0.009
-0.042
-0.605
0.545
agreeableness
ideal
general
0.000
-0.001
-0.020
0.984
agreeableness
current
specific
-0.041
-0.296
-2.392
0.017
agreeableness
ideal
specific
-0.017
-0.094
-1.087
0.277
conscientiousness
current
general
-0.035
-0.101
-1.418
0.156
conscientiousness
ideal
general
0.019
0.060
1.044
0.297
conscientiousness
current
specific
-0.043
-0.159
-1.707
0.088
conscientiousness
ideal
specific
-0.035
-0.148
-2.036
0.042
neuroticism
current
general
-0.026
-0.070
-1.082
0.279
neuroticism
ideal
general
-0.018
-0.050
-0.681
0.496
neuroticism
current
specific
0.045
0.178
2.121
0.034
neuroticism
ideal
specific
0.002
0.009
0.116
0.908
openness
current
general
-0.016
-0.065
-0.794
0.427
openness
ideal
general
-0.028
-0.132
-1.941
0.052
openness
current
specific
-0.018
-0.126
-1.099
0.272
openness
ideal
specific
-0.018
-0.140
-2.101
0.036
Four covariances significantly differ from zero (at p < .05):
changes in current-level agreeableness covary with the specific acceptance goals (latent factor of the three A facets)
changes in ideal-level conscientiousness covary with the specific acceptance goals (latent factor of the three C facets)
changes in current-level neuroticism covary with the specific acceptance goals (latent factor of the three N facets)
changes in ideal-level openness covary with the specific acceptance goals (latent factor of the three O facets)
-> unexpected direction of effects!
Results summary across the Big Five facets: covariance of the latent change score and acceptance goal(s)
kable(df_table_hyp5[21:80, ], digits =3)
trait
ref
goal
estimate
std.all
statistic
p.value
sociability
current
general
0.036
0.083
0.879
0.379
sociability
ideal
general
-0.022
-0.118
-0.742
0.458
sociability
current
specific
-0.049
-0.108
-1.284
0.199
sociability
ideal
specific
-0.043
-0.239
-1.742
0.082
assertiveness
current
general
-0.011
-0.040
-0.457
0.648
assertiveness
ideal
general
0.040
0.239
1.826
0.068
assertiveness
current
specific
-0.005
-0.017
-0.164
0.870
assertiveness
ideal
specific
0.045
0.272
1.817
0.069
energy
current
general
-0.003
-0.018
-0.245
0.806
energy
ideal
general
0.010
0.062
0.781
0.435
energy
current
specific
-0.028
-0.146
-1.415
0.157
energy
ideal
specific
0.005
0.032
0.398
0.690
compassion
current
general
-0.043
-0.111
-1.236
0.216
compassion
ideal
general
-0.005
-0.014
-0.138
0.890
compassion
current
specific
-0.092
-0.226
-2.053
0.040
compassion
ideal
specific
-0.042
-0.111
-1.036
0.300
respectfulness
current
general
-0.007
-0.022
-0.308
0.758
respectfulness
ideal
general
-0.004
-0.029
-0.209
0.834
respectfulness
current
specific
-0.147
-0.402
-3.818
0.000
respectfulness
ideal
specific
-0.023
-0.152
-0.984
0.325
trust
current
general
0.008
0.038
0.283
0.777
trust
ideal
general
0.009
0.034
0.371
0.710
trust
current
specific
0.040
0.193
1.108
0.268
trust
ideal
specific
0.018
0.066
0.629
0.529
organization
current
general
-0.083
-0.178
-2.143
0.032
organization
ideal
general
-0.003
-0.013
-0.139
0.889
organization
current
specific
-0.148
-0.286
-3.323
0.001
organization
ideal
specific
-0.035
-0.134
-1.259
0.208
productiveness
current
general
-0.035
-0.090
-1.111
0.267
productiveness
ideal
general
0.006
0.027
0.374
0.708
productiveness
current
specific
-0.073
-0.177
-1.833
0.067
productiveness
ideal
specific
-0.036
-0.153
-1.789
0.074
responsibility
current
general
-0.011
-0.058
-0.668
0.504
responsibility
ideal
general
0.039
0.143
1.685
0.092
responsibility
current
specific
-0.034
-0.173
-1.505
0.132
responsibility
ideal
specific
-0.041
-0.152
-1.689
0.091
anxiety
current
general
-0.031
-0.074
-0.778
0.437
anxiety
ideal
general
-0.014
-0.055
-0.469
0.639
anxiety
current
specific
0.113
0.258
2.652
0.008
anxiety
ideal
specific
0.009
0.035
0.387
0.698
depression
current
general
-0.007
-0.024
-0.327
0.744
depression
ideal
general
-0.003
-0.010
-0.106
0.916
depression
current
specific
0.044
0.149
1.847
0.065
depression
ideal
specific
0.006
0.021
0.259
0.795
volatility
current
general
0.017
0.041
0.444
0.657
volatility
ideal
general
-0.032
-0.123
-1.124
0.261
volatility
current
specific
0.035
0.084
0.789
0.430
volatility
ideal
specific
-0.009
-0.037
-0.383
0.701
curiosity
current
general
-0.001
-0.005
-0.027
0.978
curiosity
ideal
general
-0.036
-0.175
-1.739
0.082
curiosity
current
specific
0.017
0.149
0.819
0.413
curiosity
ideal
specific
-0.014
-0.070
-0.648
0.517
aesthetic
current
general
-0.005
-0.038
-0.383
0.701
aesthetic
ideal
general
-0.009
-0.055
-0.716
0.474
aesthetic
current
specific
-0.030
-0.226
-1.986
0.047
aesthetic
ideal
specific
-0.015
-0.089
-1.088
0.277
imagination
current
general
-0.009
-0.034
-0.366
0.715
imagination
ideal
general
-0.042
-0.129
-1.664
0.096
imagination
current
specific
-0.053
-0.182
-1.696
0.090
imagination
ideal
specific
-0.054
-0.159
-1.809
0.070
Looking at the facets, we find five covariances that significantly differ from zero at p < .05 (relatively unsystematic across facets / current-ideal / goal dimension):
- Changes in current-level compassion and respectfulness covary with the respective facet-specific acceptance goal.
- Further, changes in current-level organization covary with the general acceptance goal and the specific facet acceptance goal.
- Changes in current-level anxiety covary with the specific facet acceptance goal.
6.6 H6: Desire to change and frequency of self-improvement behaviors as moderators of change in personality in self-improvement group (H2 in paper)
In the self-improvement group, change in current-personality ratings but not change in ideal-personality ratings will be moderated by change goals (both general and trait-/facet-specific goals) and the frequency of self-improvement behaviors.
We will test this one domain/facet at a time. To test this hypothesis, we will estimate the mean-level difference across time for both current and ideal trait ratings using latent change models and specify change goals (or the frequency of self-improvement behaviors) as a moderator of latent trait change. We will check in a second set of models whether changes in current-personality ratings persist from T2 to T3.
Reshape and split data set by intervention group:
Show the code
# from T1 to T2df_sbsa2_wide_pers_sb_mod <- df_sbsa2 %>%filter(rando=="Self-Improvement"& time %in%c(1,2)) %>%arrange(pid, time) %>%select(pid, time, starts_with(c("sb07", # facet-specific change goals"sb04"))) %>%# frequency self-improvement behaviorspivot_wider(names_from = time,names_sep ="_t",values_from =c(starts_with(c("sb07", "sb04")))) %>%select(-c(sb07_01_t2, sb07_02_t2, sb07_03_t2, sb07_04_t2, sb07_05_t2, sb07_06_t2, sb07_07_t2, sb07_08_t2, sb07_09_t2, sb07_10_t2, sb07_11_t2, sb07_12_t2, sb07_13_t2, sb07_14_t2, sb07_15_t2, sb04_01_t1, sb04_02_t1, sb04_03_t1)) # frequency of self-improvement behaviors measured at T2# standardize goal variables (better interpretation for when they are in SEM as a single manifest variable, not so much a problem when they form a latent scale)df_sbsa2_wide_pers_sb_mod <- df_sbsa2_wide_pers_sb_mod %>%mutate_at(c(colnames(df_sbsa2_wide_pers_sb_mod)[-1]), ~(scale(.) %>% as.vector)) # colnames(df_sbsa2_wide_pers_sb_mod)group_assign <- df_sbsa2 %>%select(pid, rando) %>%unique()df_sbsa2_wide_pers_sb_mod <- df_sbsa2_wide_pers %>%left_join(group_assign) %>%filter(rando=="Self-Improvement") %>%select(-rando, -ends_with("_t3")) %>%left_join(df_sbsa2_wide_pers_sb_mod)# follow-up, from T2 to T3df_sbsa2_wide_pers_sb_mod_fu <- df_sbsa2 %>%filter(rando=="Self-Improvement"& time %in%c(1,2)) %>%arrange(pid, time) %>%select(pid, time, starts_with(c("sb07", # facet-specific change goals -> asked at T1"sb04"))) %>%# frequency self-improvement behaviors -> asked at T2pivot_wider(names_from = time,names_sep ="_t",values_from =c(starts_with(c("sb07", "sb04")))) %>%select(-c(sb07_01_t2, sb07_02_t2, sb07_03_t2, sb07_04_t2, sb07_05_t2, sb07_06_t2, sb07_07_t2, sb07_08_t2, sb07_09_t2, sb07_10_t2, sb07_11_t2, sb07_12_t2, sb07_13_t2, sb07_14_t2, sb07_15_t2, sb04_01_t1, sb04_02_t1, sb04_03_t1)) # frequency of self-improvement behaviors measured at T2# standardize goal variables (better interpretation for when they are in SEM as a single manifest variable, not so much a problem when they form a latent scale)df_sbsa2_wide_pers_sb_mod_fu <- df_sbsa2_wide_pers_sb_mod_fu %>%mutate_at(c(colnames(df_sbsa2_wide_pers_sb_mod_fu)[-1]), ~(scale(.) %>% as.vector)) # colnames(df_sbsa2_wide_pers_sb_mod_fu)df_sbsa2_wide_pers_sb_mod_fu <- df_sbsa2_wide_pers %>%left_join(group_assign) %>%filter(rando=="Self-Improvement"&!is.na(valid_t2)) %>%select(-rando, -ends_with("_t1")) %>%left_join(df_sbsa2_wide_pers_sb_mod_fu)
6.6.1 Big Five traits (run models)
Run models for all traits with templates & loops:
Show the code
# create templates:# 1st, for facet-specific change goalstrait_template_mod_goal <-'trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 # This specifies the measurement model for trait_t1 trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadingsgoals =~ 1*ind_goal_1 + ind_goal_2 + ind_goal_3 # latent variable for moderatortrait_t2 ~ 1*trait_t1 # This parameter regresses trait_t2 perfectly on trait_t1d_trait_1 =~ 1*trait_t2 # This defines the latent change score factor as measured perfectly by scores on trait_t2trait_t2 ~ 0*1 # This line constrains the intercept of trait_t2 to 0trait_t2 ~~ 0*trait_t2 # This fixes the variance of trait_t2 to 0d_trait_1 ~ 1 # This estimates the intercept of the change score trait_t1 ~ 1 # This estimates the intercept of trait_t1 d_trait_1 ~~ d_trait_1 # This estimates the variance of the change scores trait_t1 ~~ trait_t1 # This estimates the variance of trait_t1 trait_t1 ~~ d_trait_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionaltrait_t1 ~ goals # This estimates the moderation effect on personality at T1d_trait_1 ~ goals # This estimates the moderation effect on the change scoregoals ~ 0*1 # This fixes the intercept of the moderator to 0goals ~~ goals # This estimates the variance of the moderatorind01_t1 ~~ ind01_t2 # This allows residual covariance on indicator X1 across T1 and T2ind02_t1 ~~ ind02_t2 # This allows residual covariance on indicator X2 across T1 and T2ind03_t1 ~~ ind03_t2 # This allows residual covariance on indicator X3 across T1 and T2ind01_t1 ~~ res1*ind01_t1 # This allows residual variance on indicator X1 at T1 ind02_t1 ~~ res2*ind02_t1 # This allows residual variance on indicator X2 at T1ind03_t1 ~~ res3*ind03_t1 # This allows residual variance on indicator X3 at T1ind01_t2 ~~ res1*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ res2*ind02_t2 # This allows residual variance on indicator X2 at T2 ind03_t2 ~~ res3*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind02_t1 ~ m2*1 # This estimates the intercept of X2 at T1ind03_t1 ~ m3*1 # This estimates the intercept of X3 at T1ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind03_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind_goal_1 ~~ ind_goal_1ind_goal_2 ~~ ind_goal_2ind_goal_3 ~~ ind_goal_3ind_goal_1 ~ 1ind_goal_2 ~ 1ind_goal_3 ~ 1'trait_facets_nrs <-list(a1 =c(1:3), b2 =c(4:6), c3 =c(7:9), d4 =c(10:12), e5 =c(13:15)) # matching facet nrs to traits # loop across 5 traits -> change in current-personality ratingsfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current# items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead! mod_names =paste0("sb07_", str_pad(trait_facets_nrs[[i]], 2, pad ="0"), "_t1") template_filled <-str_replace_all(trait_template_mod_goal, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"), "ind_goal_1"= mod_names[1], "ind_goal_2"= mod_names[2], "ind_goal_3"= mod_names[3])) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), trait_model_fit))} # loop across 5 traits -> change in *ideal*-self ratings (not hypothesis-conform)for (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current# items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead! mod_names =paste0("sb07_", str_pad(trait_facets_nrs[[i]], 2, pad ="0"), "_t1") template_filled <-str_replace_all(trait_template_mod_goal, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), # ideal instead of current!"ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"), "ind_goal_1"= mod_names[1], "ind_goal_2"= mod_names[2], "ind_goal_3"= mod_names[3])) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp6")), template_filled)) # ideal instead of curreval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp6")), trait_model_fit))} # we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for current personality ratings)trait_template_mod_goal_fu <-'trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for trait_t2 trait_t3 =~ 1*ind01_t3 + lamb2*ind02_t3 + lamb3*ind03_t3 # This specifies the measurement model for trait_t3 with the equality constrained factor loadingsgoals =~ 1*ind_goal_1 + ind_goal_2 + ind_goal_3 # latent variable for moderatortrait_t3 ~ 1*trait_t2 # This parameter regresses trait_t3 perfectly on trait_t2d_trait_1 =~ 1*trait_t3 # This defines the latent change score factor as measured perfectly by scores on trait_t3trait_t3 ~ 0*1 # This line constrains the intercept of trait_t3 to 0trait_t3 ~~ 0*trait_t3 # This fixes the variance of trait_t3 to 0d_trait_1 ~ 1 # This estimates the intercept of the change score trait_t2 ~ 1 # This estimates the intercept of trait_t2 d_trait_1 ~~ d_trait_1 # This estimates the variance of the change scores trait_t2 ~~ trait_t2 # This estimates the variance of trait_t2 trait_t2 ~~ d_trait_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionaltrait_t2 ~ goals # This estimates the moderation effect on personality at T2d_trait_1 ~ goals # This estimates the moderation effect on the change scoregoals ~ 0*1 # This fixes the intercept of the moderator to 0goals ~~ goals # This estimates the variance of the moderatorind01_t2 ~~ ind01_t3 # This allows residual covariance on indicator X1 across T2 and T3ind02_t2 ~~ ind02_t3 # This allows residual covariance on indicator X2 across T2 and T3ind03_t2 ~~ ind03_t3 # This allows residual covariance on indicator X3 across T2 and T3ind01_t2 ~~ res1*ind01_t2 # This allows residual variance on indicator X1 at T2ind02_t2 ~~ res2*ind02_t2 # This allows residual variance on indicator X2 at T2ind03_t2 ~~ res3*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t3 ~~ res1*ind01_t3 # This allows residual variance on indicator X1 at T3 ind02_t3 ~~ res2*ind02_t3 # This allows residual variance on indicator X2 at T3 ind03_t3 ~~ res3*ind03_t3 # This allows residual variance on indicator X3 at T3ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind03_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind01_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T3ind02_t3 ~ m2*1 # This estimates the intercept of X2 at T3ind03_t3 ~ m3*1 # This estimates the intercept of X3 at T3ind_goal_1 ~~ ind_goal_1ind_goal_2 ~~ ind_goal_2ind_goal_3 ~~ ind_goal_3ind_goal_1 ~ 1ind_goal_2 ~ 1ind_goal_3 ~ 1'# loop across 5 traits -> change in current-personality ratingsfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current# items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead! mod_names =paste0("sb07_", str_pad(trait_facets_nrs[[i]], 2, pad ="0"), "_t1") template_filled <-str_replace_all(trait_template_mod_goal_fu, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"), "ind_goal_1"= mod_names[1], "ind_goal_2"= mod_names[2], "ind_goal_3"= mod_names[3])) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp6_fu")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp6_fu")), trait_model_fit))} # 2nd, for frequency of self-improvement behaviortrait_template_mod_frequ <-'trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 # This specifies the measurement model for extra_t1 trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadingsfrequ =~ 1*sb04_01_t2 + sb04_02_t2 + sb04_03_t2 # latent variable for moderatortrait_t2 ~ 1*trait_t1 # This parameter regresses trait_t2 perfectly on trait_t1d_trait_1 =~ 1*trait_t2 # This defines the latent change score factor as measured perfectly by scores on trait_t2trait_t2 ~ 0*1 # This line constrains the intercept of trait_t2 to 0trait_t2 ~~ 0*trait_t2 # This fixes the variance of trait_t2 to 0d_trait_1 ~ 1 # This estimates the intercept of the change score trait_t1 ~ 1 # This estimates the intercept of trait_t1 d_trait_1 ~~ d_trait_1 # This estimates the variance of the change scores trait_t1 ~~ trait_t1 # This estimates the variance of trait_t1 trait_t1 ~~ d_trait_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionaltrait_t1 ~ frequ # This estimates the moderation effect on personality at T1d_trait_1 ~ frequ # This estimates the moderation effect on the change scorefrequ ~ 0*1 # This fixes the intercept of the moderator to 0frequ ~~ frequ # This estimates the variance of the moderatorind01_t1 ~~ ind01_t2 # This allows residual covariance on indicator X1 across T1 and T2ind02_t1 ~~ ind02_t2 # This allows residual covariance on indicator X2 across T1 and T2ind03_t1 ~~ ind03_t2 # This allows residual covariance on indicator X3 across T1 and T2ind01_t1 ~~ res1*ind01_t1 # This allows residual variance on indicator X1 at T1 ind02_t1 ~~ res2*ind02_t1 # This allows residual variance on indicator X2 at T1ind03_t1 ~~ res3*ind03_t1 # This allows residual variance on indicator X3 at T1ind01_t2 ~~ res1*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ res2*ind02_t2 # This allows residual variance on indicator X2 at T2 ind03_t2 ~~ res3*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind02_t1 ~ m2*1 # This estimates the intercept of X2 at T1ind03_t1 ~ m3*1 # This estimates the intercept of X3 at T1ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind03_t2 ~ m3*1 # This estimates the intercept of X3 at T2sb04_01_t2 ~~ sb04_01_t2sb04_02_t2 ~~ sb04_02_t2sb04_03_t2 ~~ sb04_03_t2sb04_01_t2 ~ 1sb04_02_t2 ~ 1sb04_03_t2 ~ 1'# loop across 5 traitsfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current# items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead! template_filled <-str_replace_all(trait_template_mod_frequ, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), trait_model_fit))} # loop across 5 traits -> change in *ideal*-self ratings (not hypothesis-conform)for (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current# items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead! template_filled <-str_replace_all(trait_template_mod_frequ, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), # ideal instead of current!"ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp6")), template_filled)) # ideal instead of curreval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp6")), trait_model_fit))} # we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for current personality ratings)trait_template_mod_frequ_fu <-'trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for extra_t2 trait_t3 =~ 1*ind01_t3 + lamb2*ind02_t3 + lamb3*ind03_t3 # This specifies the measurement model for extra_t3 with the equality constrained factor loadingsfrequ =~ 1*sb04_01_t2 + sb04_02_t2 + sb04_03_t2 # latent variable for moderatortrait_t3 ~ 1*trait_t2 # This parameter regresses trait_t3 perfectly on trait_t2d_trait_1 =~ 1*trait_t3 # This defines the latent change score factor as measured perfectly by scores on trait_t3trait_t3 ~ 0*1 # This line constrains the intercept of trait_t3 to 0trait_t3 ~~ 0*trait_t3 # This fixes the variance of trait_t3 to 0d_trait_1 ~ 1 # This estimates the intercept of the change score trait_t2 ~ 1 # This estimates the intercept of trait_t2 d_trait_1 ~~ d_trait_1 # This estimates the variance of the change scores trait_t2 ~~ trait_t2 # This estimates the variance of trait_t2 trait_t2 ~~ d_trait_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionaltrait_t2 ~ frequ # This estimates the moderation effect on personality at T2d_trait_1 ~ frequ # This estimates the moderation effect on the change scorefrequ ~ 0*1 # This fixes the intercept of the moderator to 0frequ ~~ frequ # This estimates the variance of the moderatorind01_t2 ~~ ind01_t3 # This allows residual covariance on indicator X1 across T2 and T3ind02_t2 ~~ ind02_t3 # This allows residual covariance on indicator X2 across T2 and T3ind03_t2 ~~ ind03_t3 # This allows residual covariance on indicator X3 across T2 and T3ind01_t2 ~~ res1*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ res2*ind02_t2 # This allows residual variance on indicator X2 at T2ind03_t2 ~~ res3*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t3 ~~ res1*ind01_t3 # This allows residual variance on indicator X1 at T3 ind02_t3 ~~ res2*ind02_t3 # This allows residual variance on indicator X2 at T3 ind03_t3 ~~ res3*ind03_t3 # This allows residual variance on indicator X3 at T3ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind03_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind01_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T3ind02_t3 ~ m2*1 # This estimates the intercept of X2 at T3ind03_t3 ~ m3*1 # This estimates the intercept of X3 at T3sb04_01_t2 ~~ sb04_01_t2sb04_02_t2 ~~ sb04_02_t2sb04_03_t2 ~~ sb04_03_t2sb04_01_t2 ~ 1sb04_02_t2 ~ 1sb04_03_t2 ~ 1'# loop across 5 traitsfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current# items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead! template_filled <-str_replace_all(trait_template_mod_frequ_fu, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6_fu")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6_fu")), trait_model_fit))}
6.6.2 Big Five traits (current personality)
6.6.2.1 Extraversion: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the extraversion change score (current-personality) is not significantly different from zero, b = 0.085, p = 0.209.
6.6.2.2 Extraversion: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of specific, facet-level change goals with the agreeableness change score (current-personality) is not significantly different from zero, b = 0.042, p = 0.205.
6.6.2.4 Agreeableness: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the agreeableness change score (current-personality) is not significantly different from zero, b = 0.013, p = 0.714.
6.6.2.5 Conscientiousness: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the conscientiousness change score (current-personality) is not significantly different from zero, b = 0.048, p = 0.195.
6.6.2.6 Conscientiousness: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the conscientiousness change score (current-personality) is not significantly different from zero, b = 0.043, p = 0.398.
6.6.2.7 Neuroticism: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the neuroticism change score (current-personality) is not significantly different from zero, b = -0.106, p = 0.025.
6.6.2.8 Neuroticism: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the neuroticism change score (current-personality) is not significantly different from zero, b = -0.035, p = 0.528.
6.6.2.9 Openness: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the openness change score (current-personality) is not significantly different from zero, b = 0.009, p = 0.839.
6.6.2.10 Openness: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the openness change score (current-personality) is not significantly different from zero, b = 0.041, p = 0.288.
6.6.3 Big Five traits (current personality - follow-up T3)
6.6.3.1 Extraversion: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the extraversion change score (current-personality) is not significantly different from zero, b = 0.116, p = 0.027.
6.6.3.2 Extraversion: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the extraversion change score (current-personality) is not significantly different from zero, b = -0.015, p = 0.735.
6.6.3.3 Agreeableness: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the agreeableness change score (current-personality) is not significantly different from zero, b = -0.004, p = 0.898.
6.6.3.4 Agreeableness: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the agreeableness change score (current-personality) is not significantly different from zero, b = -0.051, p = 0.071.
6.6.3.5 Conscientiousness: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the conscientiousness change score (current-personality) is not significantly different from zero, b = 0.076, p = 0.069.
6.6.3.6 Conscientiousness: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the conscientiousness change score (current-personality) is not significantly different from zero, b = -0.015, p = 0.777.
6.6.3.7 Neuroticism: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the neuroticism change score (current-personality) is not significantly different from zero, b = -0.077, p = 0.1.
6.6.3.8 Neuroticism: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the neuroticism change score (current-personality) is not significantly different from zero, b = -0.012, p = 0.818.
6.6.3.9 Openness: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the openness change score (current-personality) is not significantly different from zero, b = 0.082, p = 0.052.
6.6.3.10 Openness: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the openness change score (current-personality) is not significantly different from zero, b = -0.034, p = 0.375.
6.6.4 Big Five traits (ideal personality)
6.6.4.1 Extraversion: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the extraversion change score (ideal-personality) is not significantly different from zero, b = 0.037, p = 0.691.
6.6.4.2 Extraversion: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the extraversion change score (ideal-personality) is not significantly different from zero, b = 0.035, p = 0.351.
6.6.4.3 Agreeableness: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the agreeableness change score (ideal-personality) is not significantly different from zero, b = 0.019, p = 0.657.
6.6.4.4 Agreeableness: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the agreeableness change score (ideal-personality) is not significantly different from zero, b = -0.032, p = 0.427.
6.6.4.5 Conscientiousness: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the conscientiousness change score (ideal-personality) is not significantly different from zero, b = -0.046, p = 0.145.
6.6.4.6 Conscientiousness: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the conscientiousness change score (ideal-personality) is not significantly different from zero, b = 0.031, p = 0.323.
6.6.4.7 Neuroticism: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the neuroticism change score (ideal-personality) is not significantly different from zero, b = 0.071, p = 0.129.
6.6.4.8 Neuroticism: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the neuroticism change score (ideal-personality) is not significantly different from zero, b = -0.004, p = 0.931.
6.6.4.9 Openness: specific, facet-level change goals as moderator of change
Results summary (goals = trait/facet specific change goal):
The moderation effect of specific, facet-level change goals with the openness change score (ideal-personality) is not significantly different from zero, b = 0, p = 0.999.
6.6.4.10 Openness: frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the openness change score (ideal-personality) is not significantly different from zero, b = 0.011, p = 0.659.
6.6.5 Big Five facets (run models)
Run models for all facets with a template & loop:
Show the code
# create templates:# 1st, for facet-specific change goalfacet_template_mod_goal <-'facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)facet_t2 ~ 1*facet_t1 # This parameter regresses facet_t2 perfectly on facet_t1d_facet_1 =~ 1*facet_t2 # This defines the latent change score factor as measured perfectly by scores on facet_t2facet_t2 ~ 0*1 # This line constrains the intercept of facet_t2 to 0facet_t2 ~~ 0*facet_t2 # This fixes the variance of facet_t2 to 0d_facet_1 ~ 1 # This estimates the intercept of the change score facet_t1 ~ 1 # This estimates the intercept of facet_t1 d_facet_1 ~~ d_facet_1 # This estimates the variance of the change scores facet_t1 ~~ facet_t1 # This estimates the variance of facet_t1 facet_t1 ~~ d_facet_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalfacet_t1 ~ ind_goal # This estimates the moderation effect on personality at T1d_facet_1 ~ ind_goal # This estimates the moderation effect on the change scoreind1_t1 ~~ ind1_t2 # This allows residual covariance on indicator X1 across T1 and T2ind2_t1 ~~ ind2_t2 # This allows residual covariance on indicator X2 across T1 and T2ind3_t1 ~~ ind3_t2 # This allows residual covariance on indicator X3 across T1 and T2ind4_t1 ~~ ind4_t2 # This allows residual covariance on indicator X4 across T1 and T2ind1_t1 ~~ res1*ind1_t1 # This allows residual variance on indicator X1 at T1 ind2_t1 ~~ res2*ind2_t1 # This allows residual variance on indicator X2 at T1ind3_t1 ~~ res3*ind3_t1 # This allows residual variance on indicator X3 at T1ind4_t1 ~~ res4*ind4_t1 # This allows residual variance on indicator X4 at T1ind1_t2 ~~ res1*ind1_t2 # This allows residual variance on indicator X1 at T2 ind2_t2 ~~ res2*ind2_t2 # This allows residual variance on indicator X2 at T2 ind3_t2 ~~ res3*ind3_t2 # This allows residual variance on indicator X3 at T2ind4_t2 ~~ res4*ind4_t2 # This allows residual variance on indicator X4 at T2ind1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind2_t1 ~ m2*1 # This estimates the intercept of X2 at T1ind3_t1 ~ m3*1 # This estimates the intercept of X3 at T1ind4_t1 ~ m4*1 # This estimates the intercept of X4 at T1ind1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind2_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind3_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind4_t2 ~ m4*1 # This estimates the intercept of X4 at T2ind_goal ~~ ind_goalind_goal ~ 1'# loop across 15 facets -> change in current-personality ratingsfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current items =paste0(bfi_versions[[5]], item_nrs) mod_name =paste0("sb07_", str_pad(i-5, 2, pad ="0"), "_t1") template_filled <-str_replace_all(facet_template_mod_goal, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4],"ind_goal"= mod_name)) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), facet_model_fit))} # loop across 15 facets -> change in ideal-personality ratingsfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current items =paste0(bfi_versions[[6]], item_nrs) # ideal mod_name =paste0("sb07_", str_pad(i-5, 2, pad ="0"), "_t1") template_filled <-str_replace_all(facet_template_mod_goal, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4],"ind_goal"= mod_name)) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp6")), template_filled)) # idealeval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp6")), facet_model_fit))} # we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for current personality ratings)facet_template_mod_goal_fu <-'facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2facet_t3 =~ 1*ind1_t3 + lamb2*ind2_t3 + lamb3*ind3_t3 + lamb4*ind4_t3 # This specifies the measurement model for facet at T3 (with equality constraints)facet_t3 ~ 1*facet_t2 # This parameter regresses facet_t3 perfectly on facet_t2d_facet_1 =~ 1*facet_t3 # This defines the latent change score factor as measured perfectly by scores on facet_t3facet_t3 ~ 0*1 # This line constrains the intercept of facet_t3 to 0facet_t3 ~~ 0*facet_t3 # This fixes the variance of facet_t3 to 0d_facet_1 ~ 1 # This estimates the intercept of the change score facet_t2 ~ 1 # This estimates the intercept of facet_t2 d_facet_1 ~~ d_facet_1 # This estimates the variance of the change scores facet_t2 ~~ facet_t2 # This estimates the variance of facet_t2 facet_t2 ~~ d_facet_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalfacet_t2 ~ ind_goal # This estimates the moderation effect on personality at T2d_facet_1 ~ ind_goal # This estimates the moderation effect on the change scoreind1_t2 ~~ ind1_t3 # This allows residual covariance on indicator X1 across T2 and T3ind2_t2 ~~ ind2_t3 # This allows residual covariance on indicator X2 across T2 and T3ind3_t2 ~~ ind3_t3 # This allows residual covariance on indicator X3 across T2 and T3ind4_t2 ~~ ind4_t3 # This allows residual covariance on indicator X4 across T2 and T3ind1_t2 ~~ res1*ind1_t2 # This allows residual variance on indicator X1 at T2 ind2_t2 ~~ res2*ind2_t2 # This allows residual variance on indicator X2 at T2ind3_t2 ~~ res3*ind3_t2 # This allows residual variance on indicator X3 at T2ind4_t2 ~~ res4*ind4_t2 # This allows residual variance on indicator X4 at T2ind1_t3 ~~ res1*ind1_t3 # This allows residual variance on indicator X1 at T3 ind2_t3 ~~ res2*ind2_t3 # This allows residual variance on indicator X2 at T3 ind3_t3 ~~ res3*ind3_t3 # This allows residual variance on indicator X3 at T3ind4_t3 ~~ res4*ind4_t3 # This allows residual variance on indicator X4 at T3ind1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind2_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind3_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind4_t2 ~ m4*1 # This estimates the intercept of X4 at T2ind1_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T3ind2_t3 ~ m2*1 # This estimates the intercept of X2 at T3ind3_t3 ~ m3*1 # This estimates the intercept of X3 at T3ind4_t3 ~ m4*1 # This estimates the intercept of X4 at T3ind_goal ~~ ind_goalind_goal ~ 1'# loop across 15 facets -> change in current-personality ratingsfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current items =paste0(bfi_versions[[5]], item_nrs) mod_name =paste0("sb07_", str_pad(i-5, 2, pad ="0"), "_t1") template_filled <-str_replace_all(facet_template_mod_goal_fu, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4],"ind_goal"= mod_name)) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp6_fu")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp6_fu")), facet_model_fit))} # 2nd, for frequency of self-improvement behaviorfacet_template_mod_frequ <-'facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)frequ =~ 1*sb04_01_t2 + sb04_02_t2 + sb04_03_t2 # latent variable for moderatorfacet_t2 ~ 1*facet_t1 # This parameter regresses facet_t2 perfectly on facet_t1d_facet_1 =~ 1*facet_t2 # This defines the latent change score factor as measured perfectly by scores on facet_t2facet_t2 ~ 0*1 # This line constrains the intercept of facet_t2 to 0facet_t2 ~~ 0*facet_t2 # This fixes the variance of facet_t2 to 0d_facet_1 ~ 1 # This estimates the intercept of the change score facet_t1 ~ 1 # This estimates the intercept of facet_t1 d_facet_1 ~~ d_facet_1 # This estimates the variance of the change scores facet_t1 ~~ facet_t1 # This estimates the variance of facet_t1 facet_t1 ~~ d_facet_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalfacet_t1 ~ frequ # This estimates the moderation effect on personality at T1d_facet_1 ~ frequ # This estimates the moderation effect on the change scorefrequ ~ 0*1 # This fixes the intercept of the moderator to 0frequ ~~ frequ # This estimates the variance of the moderatorind1_t1 ~~ ind1_t2 # This allows residual covariance on indicator X1 across T1 and T2ind2_t1 ~~ ind2_t2 # This allows residual covariance on indicator X2 across T1 and T2ind3_t1 ~~ ind3_t2 # This allows residual covariance on indicator X3 across T1 and T2ind4_t1 ~~ ind4_t2 # This allows residual covariance on indicator X4 across T1 and T2ind1_t1 ~~ res1*ind1_t1 # This allows residual variance on indicator X1 at T1 ind2_t1 ~~ res2*ind2_t1 # This allows residual variance on indicator X2 at T1ind3_t1 ~~ res3*ind3_t1 # This allows residual variance on indicator X3 at T1ind4_t1 ~~ res4*ind4_t1 # This allows residual variance on indicator X4 at T1ind1_t2 ~~ res1*ind1_t2 # This allows residual variance on indicator X1 at T2 ind2_t2 ~~ res2*ind2_t2 # This allows residual variance on indicator X2 at T2 ind3_t2 ~~ res3*ind3_t2 # This allows residual variance on indicator X3 at T2ind4_t2 ~~ res4*ind4_t2 # This allows residual variance on indicator X4 at T2ind1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind2_t1 ~ m2*1 # This estimates the intercept of X2 at T1ind3_t1 ~ m3*1 # This estimates the intercept of X3 at T1ind4_t1 ~ m4*1 # This estimates the intercept of X4 at T1ind1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind2_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind3_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind4_t2 ~ m4*1 # This estimates the intercept of X4 at T2sb04_01_t2 ~~ sb04_01_t2sb04_02_t2 ~~ sb04_02_t2sb04_03_t2 ~~ sb04_03_t2sb04_01_t2 ~ 1sb04_02_t2 ~ 1sb04_03_t2 ~ 1'# loop across 15 facets -> change in current-personality ratingsfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current items =paste0(bfi_versions[[5]], item_nrs) template_filled <-str_replace_all(facet_template_mod_frequ, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4])) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), facet_model_fit))} # loop across 15 facets -> change in ideal-personality ratingsfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current items =paste0(bfi_versions[[6]], item_nrs) # ideal template_filled <-str_replace_all(facet_template_mod_frequ, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4])) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp6")), template_filled)) # idealeval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp6")), facet_model_fit))} # we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for current personality ratings)facet_template_mod_frequ_fu <-'facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2facet_t3 =~ 1*ind1_t3 + lamb2*ind2_t3 + lamb3*ind3_t3 + lamb4*ind4_t3 # This specifies the measurement model for facet at T3 (with equality constraints)frequ =~ 1*sb04_01_t2 + sb04_02_t2 + sb04_03_t2 # latent variable for moderatorfacet_t3 ~ 1*facet_t2 # This parameter regresses facet_t3 perfectly on facet_t2d_facet_1 =~ 1*facet_t3 # This defines the latent change score factor as measured perfectly by scores on facet_t3facet_t3 ~ 0*1 # This line constrains the intercept of facet_t3 to 0facet_t3 ~~ 0*facet_t3 # This fixes the variance of facet_t3 to 0d_facet_1 ~ 1 # This estimates the intercept of the change score facet_t2 ~ 1 # This estimates the intercept of facet_t2 d_facet_1 ~~ d_facet_1 # This estimates the variance of the change scores facet_t2 ~~ facet_t2 # This estimates the variance of facet_t2 facet_t2 ~~ d_facet_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalfacet_t2 ~ frequ # This estimates the moderation effect on personality at T2d_facet_1 ~ frequ # This estimates the moderation effect on the change scorefrequ ~ 0*1 # This fixes the intercept of the moderator to 0frequ ~~ frequ # This estimates the variance of the moderatorind1_t2 ~~ ind1_t3 # This allows residual covariance on indicator X1 across T2 and T3ind2_t2 ~~ ind2_t3 # This allows residual covariance on indicator X2 across T2 and T3ind3_t2 ~~ ind3_t3 # This allows residual covariance on indicator X3 across T2 and T3ind4_t2 ~~ ind4_t3 # This allows residual covariance on indicator X4 across T2 and T3ind1_t2 ~~ res1*ind1_t2 # This allows residual variance on indicator X1 at T2 ind2_t2 ~~ res2*ind2_t2 # This allows residual variance on indicator X2 at T2ind3_t2 ~~ res3*ind3_t2 # This allows residual variance on indicator X3 at T2ind4_t2 ~~ res4*ind4_t2 # This allows residual variance on indicator X4 at T2ind1_t3 ~~ res1*ind1_t3 # This allows residual variance on indicator X1 at T3 ind2_t3 ~~ res2*ind2_t3 # This allows residual variance on indicator X2 at T3 ind3_t3 ~~ res3*ind3_t3 # This allows residual variance on indicator X3 at T3ind4_t3 ~~ res4*ind4_t3 # This allows residual variance on indicator X4 at T3ind1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind2_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind3_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind4_t2 ~ m4*1 # This estimates the intercept of X4 at T2ind1_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T3ind2_t3 ~ m2*1 # This estimates the intercept of X2 at T3ind3_t3 ~ m3*1 # This estimates the intercept of X3 at T3ind4_t3 ~ m4*1 # This estimates the intercept of X4 at T3sb04_01_t2 ~~ sb04_01_t2sb04_02_t2 ~~ sb04_02_t2sb04_03_t2 ~~ sb04_03_t2sb04_01_t2 ~ 1sb04_02_t2 ~ 1sb04_03_t2 ~ 1'# loop across 15 facets -> change in current-personality ratings from T2 to T3for (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post current items =paste0(bfi_versions[[5]], item_nrs) template_filled <-str_replace_all(facet_template_mod_frequ_fu, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4])) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6_fu")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6_fu")), facet_model_fit))}
6.6.6 Big Five facets (current personality)
6.6.6.1 Sociability - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the sociability change score (current-personality) is not significantly different from zero, b = 0.037, p = 0.316.
6.6.6.2 Sociability - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the facet-specific change goal with the assertiveness change score (current-personality) is not significantly different from zero, b = -0.018, p = 0.462.
6.6.6.4 Assertiveness - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the assertiveness change score (current-personality) is not significantly different from zero, b = 0.03, p = 0.449.
6.6.6.5 Energy - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the energy change score (current-personality) is not significantly different from zero, b = 0.053, p = 0.002.
6.6.6.6 Energy - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the energy change score (current-personality) is not significantly different from zero (at p < . 001), b = 0.062, p = 0.038.
6.6.6.7 Compassion - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the compassion change score (current-personality) is not significantly different from zero, b = 0.064, p = 0.05.
6.6.6.8 Compassion - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the compassion change score (current-personality) is not significantly different from zero, b = 0.015, p = 0.796.
6.6.6.9 Respectfulness - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the respectfulness change score (current-personality) is not significantly different from zero, b = 0.042, p = 0.207.
6.6.6.10 Respectfulness - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the respectfulness change score (current-personality) is not significantly different from zero, b = -0.096, p = 0.039.
6.6.6.11 Trust - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the trust change score (current-personality) is not significantly different from zero, b = 0.065, p = 0.099.
6.6.6.12 Trust - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the self-improvement behaviors with the trust change score (current-personality) is not significantly different from zero, b = -0.001, p = 0.99.
6.6.6.13 Organization - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the organization change score (current-personality) is not significantly different from zero, b = 0.083, p = 0.049.
6.6.6.14 Organization - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the organization change score (current-personality) is not significantly different from zero, b = 0.026, p = 0.706.
6.6.6.15 Productiveness - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the productiveness change score (current-personality) is not significantly different from zero, b = 0.077, p = 0.106.
6.6.6.16 Productiveness - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the productiveness change score (current-personality) is not significantly different from zero, b = 0.11, p = 0.177.
6.6.6.17 Responsibility - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the responsibility change score (current-personality) is not significantly different from zero, b = 0.031, p = 0.222.
6.6.6.18 Responsibility - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the responsibility change score (current-personality) is not significantly different from zero, b = 0.001, p = 0.989.
6.6.6.19 Anxiety - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the frequency of self-improvement behaviors with the anxiety change score (current-personality) is not significantly different from zero, b = -0.058, p = 0.462.
6.6.6.21 Depression - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the depression change score (current-personality) is not significantly different from zero, b = -0.06, p = 0.021.
6.6.6.22 Depression - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the depression change score (current-personality) is not significantly different from zero, b = -0.034, p = 0.479.
6.6.6.23 Volatility - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the volatility change score (current-personality) is not significantly different from zero, b = -0.04, p = 0.407.
6.6.6.24 Volatility - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the volatility change score (current-personality) is significantly different from zero, b = 0.04, p = 0.631.
6.6.6.25 Curiosity - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the curiosity change score (current-personality) is not significantly different from zero, b = 0.057, p = 0.024.
6.6.6.26 Curiosity - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the curiosity change score (current-personality) is not significantly different from zero (at p < .001), b = 0.104, p = 0.011.
6.6.6.27 Aesthetic - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the aesthetic change score (current-personality) is not significantly different from zero, b = -0.002, p = 0.838.
6.6.6.28 Aesthetic - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the aesthetic change score (current-personality) is not significantly different from zero, b = -0.008, p = 0.624.
6.6.6.29 Imagination - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the imagination change score (current-personality) is not significantly different from zero, b = 0.011, p = 0.748.
6.6.6.30 Imagination - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the imagination change score (current-personality) is not significantly different from zero, b = 0.065, p = 0.268.
6.6.7 Big Five facets (current personality - follow-up T3)
6.6.7.1 Sociability - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the sociability change score (current-personality) from T2 to T3 is not significantly different from zero, b = 0.025, p = 0.519.
6.6.7.2 Sociability - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the sociability change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.021, p = 0.692.
6.6.7.3 Assertiveness - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the assertiveness change score from T2 to T3 (current-personality) is not significantly different from zero, b = 0.035, p = 0.191.
6.6.7.4 Assertiveness - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the assertiveness change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.001, p = 0.971.
6.6.7.5 Energy - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the energy change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.002, p = 0.879.
6.6.7.6 Energy - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the energy change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.005, p = 0.877.
6.6.7.7 Compassion - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the compassion change score from T2 to T3 (current-personality) is not significantly different from zero (at p < . 001), b = -0.122, p = 0.005.
6.6.7.8 Compassion - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the compassion change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.059, p = 0.29.
6.6.7.9 Respectfulness - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the respectfulness change score from T2 to T3 (current-personality) is not significantly different from zero, b = 0.017, p = 0.448.
6.6.7.10 Respectfulness - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the respectfulness change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.043, p = 0.218.
6.6.7.11 Trust - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the trust change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.008, p = 0.777.
6.6.7.12 Trust - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the self-improvement behaviors with the trust change score from T2 to T3 (current-personality) is not significantly different from zero, b = 0.01, p = 0.819.
6.6.7.13 Organization - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the organization change score from T2 to T3 (current-personality) is not significantly different from zero, b = 0.075, p = 0.085.
6.6.7.14 Organization - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the organization change score from T2 to T3 (current-personality) is not significantly different from zero (at p < .001), b = 0.111, p = 0.108.
6.6.7.15 Productiveness - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the productiveness change score from T2 to T3 (current-personality) is not significantly different from zero, b = 0.047, p = 0.289.
6.6.7.16 Productiveness - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the productiveness change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.086, p = 0.257.
6.6.7.17 Responsibility - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the responsibility change score from T2 to T3 (current-personality) is not significantly different from zero, b = 0.03, p = 0.356.
6.6.7.18 Responsibility - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the responsibility change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.006, p = 0.916.
6.6.7.19 Anxiety - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the responsibility change score from T2 to T3 (current-personality) is not significantly different from zero, b = 0.07, p = 0.083.
6.6.7.20 Anxiety - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the anxiety change score from T2 to T3 (current-personality) is not significantly different from zero, b = 0.044, p = 0.561.
6.6.7.21 Depression - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the depression change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.048, p = 0.078.
6.6.7.22 Depression - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the depression change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.001, p = 0.982.
6.6.7.23 Volatility - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the volatility change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.076, p = 0.091.
6.6.7.24 Volatility - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the volatility change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.048, p = 0.493.
6.6.7.25 Curiosity - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the curiosity change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.003, p = 0.919.
6.6.7.26 Curiosity - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the curiosity change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.036, p = 0.368.
6.6.7.27 Aesthetic - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the aesthetic change score from T2 to T3 (current-personality) is not significantly different from zero, b = 0.012, p = 0.226.
6.6.7.28 Aesthetic - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the aesthetic change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.007, p = 0.641.
6.6.7.29 Imagination - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the imagination change score from T2 to T3 (current-personality) is not significantly different from zero, b = 0.053, p = 0.133.
6.6.7.30 Imagination - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the imagination change score from T2 to T3 (current-personality) is not significantly different from zero, b = -0.044, p = 0.45.
6.6.8 Big Five facets (ideal personality)
6.6.8.1 Sociability - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the sociability change score (ideal-personality) is not significantly different from zero, b = -0.064, p = 0.043.
6.6.8.2 Sociability - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with sociability change score (ideal-personality) is not significantly different from zero, b = 0.056, p = 0.297.
6.6.8.3 Assertiveness - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the assertiveness change score (ideal-personality) is not significantly different from zero, b = 0.003, p = 0.882.
6.6.8.4 Assertiveness - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the assertiveness change score (ideal-personality) is not significantly different from zero, b = 0.016, p = 0.622.
6.6.8.5 Energy - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the energy change score (ideal-personality) is not significantly different from zero, b = -0.012, p = 0.406.
6.6.8.6 Energy - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the energy change score (ideal-personality) is not significantly different from zero, b = 0.016, p = 0.546.
6.6.8.7 Compassion - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the compassion change score (ideal-personality) is not significantly different from zero, b = 0.057, p = 0.109.
6.6.8.8 Compassion - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the compassion change score (ideal-personality) is not significantly different from zero, b = 0.011, p = 0.855.
6.6.8.9 Respectfulness - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the respectfulness change score (ideal-personality) is not significantly different from zero, b = -0.013, p = 0.638.
6.6.8.10 Respectfulness - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the respectfulness change score (ideal-personality) is not significantly different from zero, b = -0.045, p = 0.207.
6.6.8.11 Trust - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the trust change score (ideal-personality) is not significantly different from zero, b = 0.022, p = 0.37.
6.6.8.12 Trust - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the self-improvement behaviors with the trust change score (ideal-personality) is not significantly different from zero, b = -0.031, p = 0.459.
6.6.8.13 Organization - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the organization change score (ideal-personality) is not significantly different from zero, b = -0.04, p = 0.234.
6.6.8.14 Organization - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the organization change score (ideal-personality) is not significantly different from zero (at p < .001), b = 0.062, p = 0.182.
6.6.8.15 Productiveness - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the productiveness change score (ideal-personality) is not significantly different from zero, b = -0.04, p = 0.069.
6.6.8.16 Productiveness - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the productiveness change score (ideal-personality) is not significantly different from zero, b = 0.031, p = 0.373.
6.6.8.17 Responsibility - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the responsibility change score (ideal-personality) is not significantly different from zero, b = -0.002, p = 0.924.
6.6.8.18 Responsibility - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the responsibility change score (ideal-personality) is not significantly different from zero, b = -0.006, p = 0.858.
6.6.8.19 Anxiety - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the anxiety change score (ideal-personality) is not significantly different from zero, b = 0.009, p = 0.734.
6.6.8.20 Anxiety - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the anxiety change score (ideal-personality) is not significantly different from zero, b = 0.023, p = 0.583.
6.6.8.21 Depression - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the depression change score (ideal-personality) is not significantly different from zero, b = 0.017, p = 0.412.
6.6.8.22 Depression - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the depression change score (ideal-personality) is not significantly different from zero, b = 0.015, p = 0.64.
6.6.8.23 Volatility - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the volatility change score (ideal-personality) is not significantly different from zero, b = 0.039, p = 0.206.
6.6.8.24 Volatility - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the volatility change score (ideal-personality) is not significantly different from zero, b = -0.036, p = 0.476.
6.6.8.25 Curiosity - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the curiosity change score (ideal-personality) is not significantly different from zero, b = 0.012, p = 0.569.
6.6.8.26 Curiosity - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the curiosity change score (ideal-personality) is not significantly different from zero, b = 0.054, p = 0.148.
6.6.8.27 Aesthetic - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the aesthetic change score (ideal-personality) is not significantly different from zero, b = 0.001, p = 0.667.
6.6.8.28 Aesthetic - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the aesthetic change score (ideal-personality) is not significantly different from zero, b = 0.001, p = 0.689.
6.6.8.29 Imagination - specific, facet-level change goal as moderator of change
Results summary (sb07_xx_t1 = trait/facet specific change goal):
The moderation effect of the facet-specific change goal with the imagination change score (ideal-personality) is not significantly different from zero, b = -0.01, p = 0.71.
6.6.8.30 Imagination - frequency of self-improvement behaviors as moderator of change
Results summary (frequ = frequency of self-improvement behavior):
The moderation effect of the frequency of self-improvement behaviors with the imagination change score (ideal-personality) is not significantly different from zero, b = 0.006, p = 0.901.
Results summary across the Big Five traits: trait-specific change goals (Goals) and frequency of self-improvement behaviors (Frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.
kable(df_table_hyp6[1:10, ], digits =3)
trait
moderator
est_main
std_main
p_main
est_mod
std_mod
p_mod
extraversion
Goals
0.098
0.335
0.000
0.085
0.173
0.209
extraversion
Frequency
0.096
0.333
0.001
0.113
0.265
0.005
agreeableness
Goals
0.020
0.100
0.261
0.042
0.139
0.205
agreeableness
Frequency
0.022
0.101
0.269
0.013
0.040
0.714
conscientiousness
Goals
0.106
0.256
0.000
0.048
0.093
0.195
conscientiousness
Frequency
0.103
0.252
0.000
0.043
0.072
0.398
neuroticism
Goals
-0.179
-0.387
0.000
-0.106
-0.173
0.025
neuroticism
Frequency
-0.180
-0.391
0.000
-0.035
-0.051
0.528
openness
Goals
0.080
0.299
0.001
0.009
0.020
0.839
openness
Frequency
0.077
0.291
0.001
0.041
0.106
0.288
No moderation effects that are significantly different from zero at p < .001. Only at p < .01 do we find a significant effect:
changes in current-level extraversion are moderated by the frequency of self-improvement behaviors
Results summary across the Big Five facets: trait-specific change goals (goals) and frequency of self-improvement behaviors (frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.
kable(df_table_hyp6[11:40, ], digits =3)
trait
moderator
est_main
std_main
p_main
est_mod
std_mod
p_mod
sociability
Goals
0.082
0.208
0.031
0.037
0.095
0.316
sociability
Frequency
0.073
0.193
0.046
0.198
0.359
0.000
assertiveness
Goals
0.065
0.232
0.014
-0.018
-0.066
0.462
assertiveness
Frequency
0.058
0.214
0.019
0.030
0.077
0.449
energy
Goals
0.057
0.375
0.005
0.053
0.348
0.002
energy
Frequency
0.058
0.370
0.005
0.062
0.267
0.038
compassion
Goals
0.102
0.411
0.001
0.064
0.259
0.050
compassion
Frequency
0.103
0.409
0.001
0.015
0.042
0.796
respectfulness
Goals
0.020
0.064
0.488
0.042
0.133
0.207
respectfulness
Frequency
0.018
0.057
0.540
-0.096
-0.211
0.039
trust
Goals
0.101
0.321
0.008
0.065
0.205
0.099
trust
Frequency
0.091
0.313
0.020
-0.001
-0.002
0.990
organization
Goals
0.096
0.196
0.031
0.083
0.170
0.049
organization
Frequency
0.088
0.192
0.036
0.026
0.039
0.706
productiveness
Goals
0.166
0.274
0.000
0.077
0.126
0.106
productiveness
Frequency
0.162
0.271
0.000
0.110
0.124
0.177
responsibility
Goals
0.057
0.224
0.026
0.031
0.120
0.222
responsibility
Frequency
0.057
0.221
0.031
0.001
0.002
0.989
anxiety
Goals
-0.212
-0.497
0.000
-0.153
-0.358
0.001
anxiety
Frequency
-0.217
-0.502
0.000
-0.058
-0.092
0.462
depression
Goals
-0.112
-0.310
0.000
-0.060
-0.166
0.021
depression
Frequency
-0.117
-0.316
0.000
-0.034
-0.062
0.479
volatility
Goals
-0.179
-0.313
0.000
-0.040
-0.069
0.407
volatility
Frequency
-0.177
-0.313
0.000
0.040
0.049
0.631
curiosity
Goals
0.038
0.198
0.118
0.057
0.296
0.024
curiosity
Frequency
0.037
0.196
0.129
0.104
0.373
0.011
aesthetic
Goals
0.007
0.074
0.443
-0.002
-0.019
0.838
aesthetic
Frequency
0.007
0.075
0.438
-0.008
-0.053
0.624
imagination
Goals
0.111
0.328
0.001
0.011
0.031
0.748
imagination
Frequency
0.110
0.317
0.001
0.065
0.126
0.268
Looking at the facets, we only find one moderator effect that significantly differ from zero (p < .001) and two other effects at p < .05:
Within extraversion, we find the effect for the frequency of self-improvement behaviors from above represented in the facet sociability, and at p < .05 in energy (but in the other, unexpected direction).
Within openness, change in the curiosity facet is moderated by the frequency of self-improvement behaviors (at p < .01).
Results summary across the Big Five traits: trait-specific change goals (Goals) and frequency of self-improvement behaviors (Frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.
kable(df_table_hyp6_ideal[1:10, ], digits =3)
trait
moderator
est_main
std_main
p_main
est_mod
std_mod
p_mod
extraversion
Goals
-0.019
-0.080
0.388
0.037
0.071
0.691
extraversion
Frequency
-0.019
-0.079
0.393
0.035
0.103
0.351
agreeableness
Goals
-0.030
-0.111
0.178
0.019
0.048
0.657
agreeableness
Frequency
-0.030
-0.112
0.175
-0.032
-0.084
0.427
conscientiousness
Goals
0.009
0.035
0.673
-0.046
-0.136
0.145
conscientiousness
Frequency
0.010
0.037
0.658
0.031
0.082
0.323
neuroticism
Goals
0.042
0.116
0.123
0.071
0.142
0.129
neuroticism
Frequency
0.042
0.114
0.127
-0.004
-0.008
0.931
openness
Goals
0.016
0.109
0.258
0.000
0.000
0.999
openness
Frequency
0.017
0.110
0.259
0.011
0.049
0.659
No significant moderation effects at the domain level.
Results summary across the Big Five facets: trait-specific change goals (Goals) and frequency of self-improvement behaviors (Frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.
kable(df_table_hyp6_ideal[11:40, ], digits =3)
trait
moderator
est_main
std_main
p_main
est_mod
std_mod
p_mod
sociability
Goals
-0.030
-0.113
0.286
-0.064
-0.235
0.043
sociability
Frequency
-0.032
-0.115
0.277
0.056
0.140
0.297
assertiveness
Goals
-0.005
-0.025
0.808
0.003
0.016
0.882
assertiveness
Frequency
-0.004
-0.020
0.837
0.016
0.054
0.622
energy
Goals
-0.038
-0.317
0.044
-0.012
-0.096
0.406
energy
Frequency
-0.040
-0.330
0.034
0.016
0.095
0.546
compassion
Goals
-0.041
-0.185
0.253
0.057
0.259
0.109
compassion
Frequency
-0.042
-0.185
0.251
0.011
0.035
0.855
respectfulness
Goals
0.001
0.002
0.984
-0.013
-0.053
0.638
respectfulness
Frequency
-0.001
-0.004
0.967
-0.045
-0.131
0.207
trust
Goals
-0.062
-0.479
0.006
0.022
0.167
0.370
trust
Frequency
-0.062
-0.482
0.007
-0.031
-0.163
0.459
organization
Goals
0.019
0.066
0.564
-0.040
-0.143
0.234
organization
Frequency
0.021
0.077
0.500
0.062
0.158
0.182
productiveness
Goals
-0.011
-0.045
0.637
-0.040
-0.159
0.069
productiveness
Frequency
-0.012
-0.046
0.633
0.031
0.087
0.373
responsibility
Goals
-0.006
-0.032
0.743
-0.002
-0.010
0.924
responsibility
Frequency
-0.006
-0.030
0.757
-0.006
-0.021
0.858
anxiety
Goals
0.021
0.083
0.389
0.009
0.035
0.734
anxiety
Frequency
0.023
0.086
0.367
0.023
0.060
0.583
depression
Goals
0.018
0.073
0.367
0.017
0.069
0.412
depression
Frequency
0.018
0.072
0.374
0.015
0.040
0.640
volatility
Goals
0.045
0.143
0.148
0.039
0.124
0.206
volatility
Frequency
0.045
0.144
0.146
-0.036
-0.079
0.476
curiosity
Goals
0.024
0.168
0.251
0.012
0.084
0.569
curiosity
Frequency
0.024
0.165
0.271
0.054
0.258
0.148
aesthetic
Goals
0.000
0.002
0.988
0.001
0.045
0.667
aesthetic
Frequency
0.000
0.001
0.995
0.001
0.044
0.689
imagination
Goals
0.022
0.083
0.393
-0.010
-0.036
0.710
imagination
Frequency
0.020
0.079
0.412
0.006
0.017
0.901
No significant moderation effects at the facet level (at p < .001).
6.7 H7: Desire to change and frequency of self-acceptance behaviors as moderators of change in personality in self-acceptance group
In the self-acceptance group, change in ideal-personality ratings but not change in current-personality ratings will be moderated by acceptance goals (both general and trait-/facet-specific goals) and the frequency of self-acceptance behaviors.
We will test this one domain/facet at a time. To test this hypothesis, we will estimate the mean-level difference across time for both current and ideal trait ratings using latent change models and specify acceptance goals (or the frequency of self-acceptance behaviors) as a moderator of latent trait change. We will check in a second set of models whether changes in ideal-personality ratings persist from T2 to T3.
Reshape and split data set by intervention group:
Show the code
# from T! to T2df_sbsa2_wide_pers_sa_mod <- df_sbsa2 %>%filter(rando=="Self-Acceptance"& time %in%c(1,2)) %>%arrange(pid, time) %>%select(pid, time, starts_with(c("sa07", # facet-specific acceptance goals"sa04"))) %>%# frequency self-acceptance behaviorspivot_wider(names_from = time,names_sep ="_t",values_from =c(starts_with(c("sa07", "sa04")))) %>%select(-c(sa07_01_t2, sa07_02_t2, sa07_03_t2, sa07_04_t2, sa07_05_t2, sa07_06_t2, sa07_07_t2, sa07_08_t2, sa07_09_t2, sa07_10_t2, sa07_11_t2, sa07_12_t2, sa07_13_t2, sa07_14_t2, sa07_15_t2, sa04_01_t1, sa04_02_t1, sa04_03_t1)) # frequency of self-acceptance behaviors measured at T2# standardize goal variables (better interpretation for when they are in SEM as a single manifest variable, not so much a problem when they form a latent scale)df_sbsa2_wide_pers_sa_mod <- df_sbsa2_wide_pers_sa_mod %>%mutate_at(c(colnames(df_sbsa2_wide_pers_sa_mod)[-1]), ~(scale(.) %>% as.vector)) # colnames(df_sbsa2_wide_pers_sa_mod)group_assign <- df_sbsa2 %>%select(pid, rando) %>%unique()df_sbsa2_wide_pers_sa_mod <- df_sbsa2_wide_pers %>%left_join(group_assign) %>%filter(rando=="Self-Acceptance") %>%select(-rando, -ends_with("_t3")) %>%left_join(df_sbsa2_wide_pers_sa_mod)# follow-up, from T2 to T3df_sbsa2_wide_pers_sa_mod_fu <- df_sbsa2 %>%filter(rando=="Self-Acceptance"& time %in%c(1,2)) %>%arrange(pid, time) %>%select(pid, time, starts_with(c("sa07", # facet-specific change goals -> asked at T1"sa04"))) %>%# frequency self-improvement behaviors -> asked at T2pivot_wider(names_from = time,names_sep ="_t",values_from =c(starts_with(c("sa07", "sa04")))) %>%select(-c(sa07_01_t2, sa07_02_t2, sa07_03_t2, sa07_04_t2, sa07_05_t2, sa07_06_t2, sa07_07_t2, sa07_08_t2, sa07_09_t2, sa07_10_t2, sa07_11_t2, sa07_12_t2, sa07_13_t2, sa07_14_t2, sa07_15_t2, sa04_01_t1, sa04_02_t1, sa04_03_t1)) # frequency of self-improvement behaviors measured at T2# standardize goal variables (better interpretation for when they are in SEM as a single manifest variable, not so much a problem when they form a latent scale)df_sbsa2_wide_pers_sa_mod_fu <- df_sbsa2_wide_pers_sa_mod_fu %>%mutate_at(c(colnames(df_sbsa2_wide_pers_sa_mod_fu)[-1]), ~(scale(.) %>% as.vector)) # colnames(df_sbsa2_wide_pers_sa_mod_fu)df_sbsa2_wide_pers_sa_mod_fu <- df_sbsa2_wide_pers %>%left_join(group_assign) %>%filter(rando=="Self-Acceptance"&!is.na(valid_t2)) %>%select(-rando, -ends_with("_t1")) %>%left_join(df_sbsa2_wide_pers_sa_mod_fu)
6.7.1 Big Five traits (run models)
Run models for all traits with a template & loop:
Show the code
# create templates:# 1st, for facet-specific acceptance goalstrait_template_mod_goal_accept <-'trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 # This specifies the measurement model for trait_t1 trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadingsgoals =~ 1*ind_goal_1 + ind_goal_2 + ind_goal_3 # latent variable for moderatortrait_t2 ~ 1*trait_t1 # This parameter regresses trait_t2 perfectly on trait_t1d_trait_1 =~ 1*trait_t2 # This defines the latent change score factor as measured perfectly by scores on trait_t2trait_t2 ~ 0*1 # This line constrains the intercept of trait_t2 to 0trait_t2 ~~ 0*trait_t2 # This fixes the variance of trait_t2 to 0d_trait_1 ~ 1 # This estimates the intercept of the change score trait_t1 ~ 1 # This estimates the intercept of trait_t1 d_trait_1 ~~ d_trait_1 # This estimates the variance of the change scores trait_t1 ~~ trait_t1 # This estimates the variance of trait_t1 trait_t1 ~~ d_trait_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionaltrait_t1 ~ goals # This estimates the moderation effect on personality at T1d_trait_1 ~ goals # This estimates the moderation effect on the change scoregoals ~ 0*1 # This fixes the intercept of the moderator to 0goals ~~ goals # This estimates the variance of the moderatorind01_t1 ~~ ind01_t2 # This allows residual covariance on indicator X1 across T1 and T2ind02_t1 ~~ ind02_t2 # This allows residual covariance on indicator X2 across T1 and T2ind03_t1 ~~ ind03_t2 # This allows residual covariance on indicator X3 across T1 and T2ind01_t1 ~~ res1*ind01_t1 # This allows residual variance on indicator X1 at T1 ind02_t1 ~~ res2*ind02_t1 # This allows residual variance on indicator X2 at T1ind03_t1 ~~ res3*ind03_t1 # This allows residual variance on indicator X3 at T1ind01_t2 ~~ res1*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ res2*ind02_t2 # This allows residual variance on indicator X2 at T2 ind03_t2 ~~ res3*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind02_t1 ~ m2*1 # This estimates the intercept of X2 at T1ind03_t1 ~ m3*1 # This estimates the intercept of X3 at T1ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind03_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind_goal_1 ~~ ind_goal_1ind_goal_2 ~~ ind_goal_2ind_goal_3 ~~ ind_goal_3ind_goal_1 ~ 1ind_goal_2 ~ 1ind_goal_3 ~ 1'trait_facets_nrs <-list(a1 =c(1:3), b2 =c(4:6), c3 =c(7:9), d4 =c(10:12), e5 =c(13:15)) # matching facet nrs to traits # loop across 5 traits -> change in ideal personalityfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal (6 = ideal)# items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead! mod_names =paste0("sa07_", str_pad(trait_facets_nrs[[i]], 2, pad ="0"), "_t1") template_filled <-str_replace_all(trait_template_mod_goal_accept, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"),"ind_goal_1"= mod_names[1], "ind_goal_2"= mod_names[2], "ind_goal_3"= mod_names[3])) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), trait_model_fit))} # loop across 5 traits -> change in current personalityfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal (6 = ideal)# items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead! mod_names =paste0("sa07_", str_pad(trait_facets_nrs[[i]], 2, pad ="0"), "_t1") template_filled <-str_replace_all(trait_template_mod_goal_accept, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), # current instead of ideal"ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"),"ind_goal_1"= mod_names[1], "ind_goal_2"= mod_names[2], "ind_goal_3"= mod_names[3])) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp7")), template_filled)) # current instead of idealeval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp7")), trait_model_fit))} # we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for ideal personality ratings)trait_template_mod_goal_accept_fu <-'trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for trait_t2 trait_t3 =~ 1*ind01_t3 + lamb2*ind02_t3 + lamb3*ind03_t3 # This specifies the measurement model for trait_t3 with the equality constrained factor loadingsgoals =~ 1*ind_goal_1 + ind_goal_2 + ind_goal_3 # latent variable for moderatortrait_t3 ~ 1*trait_t2 # This parameter regresses trait_t3 perfectly on trait_t2d_trait_1 =~ 1*trait_t3 # This defines the latent change score factor as measured perfectly by scores on trait_t3trait_t3 ~ 0*1 # This line constrains the intercept of trait_t3 to 0trait_t3 ~~ 0*trait_t3 # This fixes the variance of trait_t3 to 0d_trait_1 ~ 1 # This estimates the intercept of the change score trait_t2 ~ 1 # This estimates the intercept of trait_t2 d_trait_1 ~~ d_trait_1 # This estimates the variance of the change scores trait_t2 ~~ trait_t2 # This estimates the variance of trait_t2 trait_t2 ~~ d_trait_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionaltrait_t2 ~ goals # This estimates the moderation effect on personality at T2d_trait_1 ~ goals # This estimates the moderation effect on the change scoregoals ~ 0*1 # This fixes the intercept of the moderator to 0goals ~~ goals # This estimates the variance of the moderatorind01_t2 ~~ ind01_t3 # This allows residual covariance on indicator X1 across T2 and T3ind02_t2 ~~ ind02_t3 # This allows residual covariance on indicator X2 across T2 and T3ind03_t2 ~~ ind03_t3 # This allows residual covariance on indicator X3 across T2 and T3ind01_t2 ~~ res1*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ res2*ind02_t2 # This allows residual variance on indicator X2 at T2ind03_t2 ~~ res3*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t3 ~~ res1*ind01_t3 # This allows residual variance on indicator X1 at T3 ind02_t3 ~~ res2*ind02_t3 # This allows residual variance on indicator X2 at T3 ind03_t3 ~~ res3*ind03_t3 # This allows residual variance on indicator X3 at T3ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind03_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind01_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T3ind02_t3 ~ m2*1 # This estimates the intercept of X2 at T3ind03_t3 ~ m3*1 # This estimates the intercept of X3 at T3ind_goal_1 ~~ ind_goal_1ind_goal_2 ~~ ind_goal_2ind_goal_3 ~~ ind_goal_3ind_goal_1 ~ 1ind_goal_2 ~ 1ind_goal_3 ~ 1'# loop across 5 traits -> change in ideal personality (from T2 to T3)for (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal (6 = ideal)# items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead! mod_names =paste0("sa07_", str_pad(trait_facets_nrs[[i]], 2, pad ="0"), "_t1") template_filled <-str_replace_all(trait_template_mod_goal_accept_fu, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"),"ind_goal_1"= mod_names[1], "ind_goal_2"= mod_names[2], "ind_goal_3"= mod_names[3])) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp7_fu")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp7_fu")), trait_model_fit))} # 2nd, for frequency of self-acceptance behaviortrait_template_mod_frequ_accept <-'trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 # This specifies the measurement model for extra_t1 trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadingsfrequ =~ 1*sa04_01_t2 + sa04_02_t2 + sa04_03_t2 # latent variable for moderatortrait_t2 ~ 1*trait_t1 # This parameter regresses trait_t2 perfectly on trait_t1d_trait_1 =~ 1*trait_t2 # This defines the latent change score factor as measured perfectly by scores on trait_t2trait_t2 ~ 0*1 # This line constrains the intercept of trait_t2 to 0trait_t2 ~~ 0*trait_t2 # This fixes the variance of trait_t2 to 0d_trait_1 ~ 1 # This estimates the intercept of the change score trait_t1 ~ 1 # This estimates the intercept of trait_t1 d_trait_1 ~~ d_trait_1 # This estimates the variance of the change scores trait_t1 ~~ trait_t1 # This estimates the variance of trait_t1 trait_t1 ~~ d_trait_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionaltrait_t1 ~ frequ # This estimates the moderation effect on personality at T1d_trait_1 ~ frequ # This estimates the moderation effect on the change scorefrequ ~ 0*1 # This fixes the intercept of the moderator to 0frequ ~~ frequ # This estimates the variance of the moderatorind01_t1 ~~ ind01_t2 # This allows residual covariance on indicator X1 across T1 and T2ind02_t1 ~~ ind02_t2 # This allows residual covariance on indicator X2 across T1 and T2ind03_t1 ~~ ind03_t2 # This allows residual covariance on indicator X3 across T1 and T2ind01_t1 ~~ res1*ind01_t1 # This allows residual variance on indicator X1 at T1 ind02_t1 ~~ res2*ind02_t1 # This allows residual variance on indicator X2 at T1ind03_t1 ~~ res3*ind03_t1 # This allows residual variance on indicator X3 at T1ind01_t2 ~~ res1*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ res2*ind02_t2 # This allows residual variance on indicator X2 at T2 ind03_t2 ~~ res3*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind02_t1 ~ m2*1 # This estimates the intercept of X2 at T1ind03_t1 ~ m3*1 # This estimates the intercept of X3 at T1ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind03_t2 ~ m3*1 # This estimates the intercept of X3 at T2sa04_01_t2 ~~ sa04_01_t2sa04_02_t2 ~~ sa04_02_t2sa04_03_t2 ~~ sa04_03_t2sa04_01_t2 ~ 1sa04_02_t2 ~ 1sa04_03_t2 ~ 1'# loop across 5 traits -> change in ideal personalityfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal# items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead! template_filled <-str_replace_all(trait_template_mod_frequ_accept, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), template_filled)) eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), trait_model_fit))} # loop across 5 traits -> change in current personalityfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal# items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead! template_filled <-str_replace_all(trait_template_mod_frequ_accept, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), # current instead of ideal"ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp7")), template_filled)) # current instead of idealeval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp7")), trait_model_fit))} # we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for current personality ratings)trait_template_mod_frequ_accept_fu <-'trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for extra_t2 trait_t3 =~ 1*ind01_t3 + lamb2*ind02_t3 + lamb3*ind03_t3 # This specifies the measurement model for extra_t3 with the equality constrained factor loadingsfrequ =~ 1*sa04_01_t2 + sa04_02_t2 + sa04_03_t2 # latent variable for moderatortrait_t3 ~ 1*trait_t2 # This parameter regresses trait_t3 perfectly on trait_t2d_trait_1 =~ 1*trait_t3 # This defines the latent change score factor as measured perfectly by scores on trait_t3trait_t3 ~ 0*1 # This line constrains the intercept of trait_t3 to 0trait_t3 ~~ 0*trait_t3 # This fixes the variance of trait_t3 to 0d_trait_1 ~ 1 # This estimates the intercept of the change score trait_t2 ~ 1 # This estimates the intercept of trait_t2 d_trait_1 ~~ d_trait_1 # This estimates the variance of the change scores trait_t2 ~~ trait_t2 # This estimates the variance of trait_t2 trait_t2 ~~ d_trait_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionaltrait_t2 ~ frequ # This estimates the moderation effect on personality at T2d_trait_1 ~ frequ # This estimates the moderation effect on the change scorefrequ ~ 0*1 # This fixes the intercept of the moderator to 0frequ ~~ frequ # This estimates the variance of the moderatorind01_t2 ~~ ind01_t3 # This allows residual covariance on indicator X1 across T2 and T3ind02_t2 ~~ ind02_t3 # This allows residual covariance on indicator X2 across T2 and T3ind03_t2 ~~ ind03_t3 # This allows residual covariance on indicator X3 across T2 and T3ind01_t2 ~~ res1*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ res2*ind02_t2 # This allows residual variance on indicator X2 at T2ind03_t2 ~~ res3*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t3 ~~ res1*ind01_t3 # This allows residual variance on indicator X1 at T3 ind02_t3 ~~ res2*ind02_t3 # This allows residual variance on indicator X2 at T3 ind03_t3 ~~ res3*ind03_t3 # This allows residual variance on indicator X3 at T3ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind03_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind01_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T3ind02_t3 ~ m2*1 # This estimates the intercept of X2 at T3ind03_t3 ~ m3*1 # This estimates the intercept of X3 at T3sa04_01_t2 ~~ sa04_01_t2sa04_02_t2 ~~ sa04_02_t2sa04_03_t2 ~~ sa04_03_t2sa04_01_t2 ~ 1sa04_02_t2 ~ 1sa04_03_t2 ~ 1'# loop across 5 traits -> change in ideal personality (from T2 to T3)for (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal# items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead! template_filled <-str_replace_all(trait_template_mod_frequ_accept_fu, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7_fu")), template_filled)) eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7_fu")), trait_model_fit))}
6.7.2 Big Five traits (ideal personality)
6.7.2.1 Extraversion: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the extraversion change score (ideal-personality) is not significantly different from zero, b = -0.042, p = 0.39.
6.7.2.2 Extraversion: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the extraversion change score (ideal-personality) is not significantly different from zero, b = 0.01, p = 0.823.
6.7.2.3 Agreeableness: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the agreeableness change score (ideal-personality) is not significantly different from zero, b = -0.017, p = 0.682.
6.7.2.4 Agreeableness: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the agreeableness change score (ideal-personality) is not significantly different from zero, b = 0.031, p = 0.422.
6.7.2.5 Conscientiousness: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the conscientiousness change score (ideal-personality) is not significantly different from zero, b = -0.056, p = 0.118.
6.7.2.6 Conscientiousness: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the conscientiousness change score (ideal-personality) is not significantly different from zero, b = 0.06, p = 0.111.
6.7.2.7 Neuroticism: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the neuroticism change score (ideal-personality) is not significantly different from zero, b = -0.014, p = 0.741.
6.7.2.8 Neuroticism: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the neuroticism change score (ideal-personality) is not significantly different from zero, b = 0.029, p = 0.569.
6.7.2.9 Openness: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the openness change score (ideal-personality) is not significantly different from zero, b = 0.027, p = 0.344.
6.7.2.10 Openness: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of frequency of self-acceptance behaviors with the openness change score (ideal-personality) is not significantly different from zero, b = 0.01, p = 0.717.
6.7.3 Big Five traits (ideal personality - follow-up at T3)
6.7.3.1 Extraversion: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the extraversion change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.044, p = 0.403.
6.7.3.2 Extraversion: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the extraversion change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.025, p = 0.5.
6.7.3.3 Agreeableness: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the agreeableness change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.035, p = 0.318.
6.7.3.4 Agreeableness: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the agreeableness change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.069, p = 0.046.
6.7.3.5 Conscientiousness: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the conscientiousness change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.008, p = 0.826.
6.7.3.6 Conscientiousness: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the conscientiousness change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.082, p = 0.024.
6.7.3.7 Neuroticism: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the neuroticism change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.005, p = 0.898.
6.7.3.8 Neuroticism: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the neuroticism change score from T2 to T3 (ideal-personality) is not significantly different from zero (at p < .001), b = 0.094, p = 0.025.
6.7.3.9 Openness: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the openness change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.001, p = 0.965.
6.7.3.10 Openness: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of frequency of self-acceptance behaviors with the openness change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.003, p = 0.886.
6.7.4 Big Five traits (current personality)
6.7.4.1 Extraversion: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the extraversion change score (current-personality) is not significantly different from zero, b = 0.052, p = 0.244.
6.7.4.2 Extraversion: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the extraversion change score (current-personality) is not significantly different from zero, b = 0.041, p = 0.31.
6.7.4.3 Agreeableness: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the agreeableness change score (current-personality) is not significantly different from zero, b = -0.048, p = 0.154.
6.7.4.4 Agreeableness: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the agreeableness change score (current-personality) is not significantly different from zero, b = 0.032, p = 0.321.
6.7.4.5 Conscientiousness: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the conscientiousness change score (current-personality) is not significantly different from zero, b = 0.042, p = 0.253.
6.7.4.6 Conscientiousness: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the conscientiousness change score (current-personality) is not significantly different from zero, b = 0.029, p = 0.478.
6.7.4.7 Neuroticism: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the neuroticism change score (current-personality) is not significantly different from zero, b = -0.01, p = 0.824.
6.7.4.8 Neuroticism: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of the frequency of self-acceptance behaviors with the neuroticism change score (current-personality) is not significantly different from zero (at p < .001), b = -0.118, p = 0.018.
6.7.4.9 Openness: specific, facet-level acceptance goals as moderator of change
Results summary (goals = trait/facet specific acceptance goal):
The moderation effect of specific, facet-level acceptance goals with the openness change score (current-personality) is not significantly different from zero, b = 0.052, p = 0.201.
6.7.4.10 Openness: frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self improvement behavior):
The moderation effect of frequency of self-acceptance behaviors with the openness change score (current-personality) is not significantly different from zero, b = 0.059, p = 0.179.
6.7.5 Big Five facets (run models)
Run models for all facets with a template & loop:
Show the code
# create templates:# 1st, for facet-specific acceptance goalfacet_template_mod_goal_accept <-'facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)facet_t2 ~ 1*facet_t1 # This parameter regresses facet_t2 perfectly on facet_t1d_facet_1 =~ 1*facet_t2 # This defines the latent change score factor as measured perfectly by scores on facet_t2facet_t2 ~ 0*1 # This line constrains the intercept of facet_t2 to 0facet_t2 ~~ 0*facet_t2 # This fixes the variance of facet_t2 to 0d_facet_1 ~ 1 # This estimates the intercept of the change score facet_t1 ~ 1 # This estimates the intercept of facet_t1 d_facet_1 ~~ d_facet_1 # This estimates the variance of the change scores facet_t1 ~~ facet_t1 # This estimates the variance of facet_t1 facet_t1 ~~ d_facet_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalfacet_t1 ~ ind_goal # This estimates the moderation effect on personality at T1d_facet_1 ~ ind_goal # This estimates the moderation effect on the change scoreind1_t1 ~~ ind1_t2 # This allows residual covariance on indicator X1 across T1 and T2ind2_t1 ~~ ind2_t2 # This allows residual covariance on indicator X2 across T1 and T2ind3_t1 ~~ ind3_t2 # This allows residual covariance on indicator X3 across T1 and T2ind4_t1 ~~ ind4_t2 # This allows residual covariance on indicator X4 across T1 and T2ind1_t1 ~~ res1*ind1_t1 # This allows residual variance on indicator X1 at T1 ind2_t1 ~~ res2*ind2_t1 # This allows residual variance on indicator X2 at T1ind3_t1 ~~ res3*ind3_t1 # This allows residual variance on indicator X3 at T1ind4_t1 ~~ res4*ind4_t1 # This allows residual variance on indicator X4 at T1ind1_t2 ~~ res1*ind1_t2 # This allows residual variance on indicator X1 at T2 ind2_t2 ~~ res2*ind2_t2 # This allows residual variance on indicator X2 at T2 ind3_t2 ~~ res3*ind3_t2 # This allows residual variance on indicator X3 at T2ind4_t2 ~~ res4*ind4_t2 # This allows residual variance on indicator X4 at T2ind1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind2_t1 ~ m2*1 # This estimates the intercept of X2 at T1ind3_t1 ~ m3*1 # This estimates the intercept of X3 at T1ind4_t1 ~ m4*1 # This estimates the intercept of X4 at T1ind1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind2_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind3_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind4_t2 ~ m4*1 # This estimates the intercept of X4 at T2ind_goal ~~ ind_goalind_goal ~ 1'# loop across 15 facets -> changes in ideal personalityfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal items =paste0(bfi_versions[[6]], item_nrs) mod_name =paste0("sa07_", str_pad(i-5, 2, pad ="0"), "_t1") template_filled <-str_replace_all(facet_template_mod_goal_accept, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4],"ind_goal"= mod_name)) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), facet_model_fit))} # loop across 15 facets -> changes in current personalityfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal items =paste0(bfi_versions[[5]], item_nrs) # current instead of ideal! mod_name =paste0("sa07_", str_pad(i-5, 2, pad ="0"), "_t1") template_filled <-str_replace_all(facet_template_mod_goal_accept, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4],"ind_goal"= mod_name)) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp7")), template_filled)) # current instead of ideal!eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_specif_hyp7")), facet_model_fit))} # we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for ideal personality ratings)facet_template_mod_goal_accept_fu <-'facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2facet_t3 =~ 1*ind1_t3 + lamb2*ind2_t3 + lamb3*ind3_t3 + lamb4*ind4_t3 # This specifies the measurement model for facet at T3 (with equality constraints)facet_t3 ~ 1*facet_t2 # This parameter regresses facet_t3 perfectly on facet_t2d_facet_1 =~ 1*facet_t3 # This defines the latent change score factor as measured perfectly by scores on facet_t3facet_t3 ~ 0*1 # This line constrains the intercept of facet_t3 to 0facet_t3 ~~ 0*facet_t3 # This fixes the variance of facet_t3 to 0d_facet_1 ~ 1 # This estimates the intercept of the change score facet_t2 ~ 1 # This estimates the intercept of facet_t2 d_facet_1 ~~ d_facet_1 # This estimates the variance of the change scores facet_t2 ~~ facet_t2 # This estimates the variance of facet_t2 facet_t2 ~~ d_facet_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalfacet_t2 ~ ind_goal # This estimates the moderation effect on personality at T2d_facet_1 ~ ind_goal # This estimates the moderation effect on the change scoreind1_t2 ~~ ind1_t3 # This allows residual covariance on indicator X1 across T2 and T3ind2_t2 ~~ ind2_t3 # This allows residual covariance on indicator X2 across T2 and T3ind3_t2 ~~ ind3_t3 # This allows residual covariance on indicator X3 across T2 and T3ind4_t2 ~~ ind4_t3 # This allows residual covariance on indicator X4 across T2 and T3ind1_t2 ~~ res1*ind1_t2 # This allows residual variance on indicator X1 at T2 ind2_t2 ~~ res2*ind2_t2 # This allows residual variance on indicator X2 at T2ind3_t2 ~~ res3*ind3_t2 # This allows residual variance on indicator X3 at T2ind4_t2 ~~ res4*ind4_t2 # This allows residual variance on indicator X4 at T2ind1_t3 ~~ res1*ind1_t3 # This allows residual variance on indicator X1 at T3 ind2_t3 ~~ res2*ind2_t3 # This allows residual variance on indicator X2 at T3 ind3_t3 ~~ res3*ind3_t3 # This allows residual variance on indicator X3 at T3ind4_t3 ~~ res4*ind4_t3 # This allows residual variance on indicator X4 at T3ind1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind2_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind3_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind4_t2 ~ m4*1 # This estimates the intercept of X4 at T2ind1_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T3ind2_t3 ~ m2*1 # This estimates the intercept of X2 at T3ind3_t3 ~ m3*1 # This estimates the intercept of X3 at T3ind4_t3 ~ m4*1 # This estimates the intercept of X4 at T3ind_goal ~~ ind_goalind_goal ~ 1'# loop across 15 facets -> changes in ideal personality (from T2 to T3)for (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal items =paste0(bfi_versions[[6]], item_nrs) mod_name =paste0("sa07_", str_pad(i-5, 2, pad ="0"), "_t1") template_filled <-str_replace_all(facet_template_mod_goal_accept_fu, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4],"ind_goal"= mod_name)) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp7_fu")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_specif_hyp7_fu")), facet_model_fit))} # 2nd, for frequency of self-acceptance behaviorfacet_template_mod_frequ_accept <-'facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)frequ =~ 1*sa04_01_t2 + sa04_02_t2 + sa04_03_t2 # latent variable for moderatorfacet_t2 ~ 1*facet_t1 # This parameter regresses facet_t2 perfectly on facet_t1d_facet_1 =~ 1*facet_t2 # This defines the latent change score factor as measured perfectly by scores on facet_t2facet_t2 ~ 0*1 # This line constrains the intercept of facet_t2 to 0facet_t2 ~~ 0*facet_t2 # This fixes the variance of facet_t2 to 0d_facet_1 ~ 1 # This estimates the intercept of the change score facet_t1 ~ 1 # This estimates the intercept of facet_t1 d_facet_1 ~~ d_facet_1 # This estimates the variance of the change scores facet_t1 ~~ facet_t1 # This estimates the variance of facet_t1 facet_t1 ~~ d_facet_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalfacet_t1 ~ frequ # This estimates the moderation effect on personality at T1d_facet_1 ~ frequ # This estimates the moderation effect on the change scorefrequ ~ 0*1 # This fixes the intercept of the moderator to 0frequ ~~ frequ # This estimates the variance of the moderatorind1_t1 ~~ ind1_t2 # This allows residual covariance on indicator X1 across T1 and T2ind2_t1 ~~ ind2_t2 # This allows residual covariance on indicator X2 across T1 and T2ind3_t1 ~~ ind3_t2 # This allows residual covariance on indicator X3 across T1 and T2ind4_t1 ~~ ind4_t2 # This allows residual covariance on indicator X4 across T1 and T2ind1_t1 ~~ res1*ind1_t1 # This allows residual variance on indicator X1 at T1 ind2_t1 ~~ res2*ind2_t1 # This allows residual variance on indicator X2 at T1ind3_t1 ~~ res3*ind3_t1 # This allows residual variance on indicator X3 at T1ind4_t1 ~~ res4*ind4_t1 # This allows residual variance on indicator X4 at T1ind1_t2 ~~ res1*ind1_t2 # This allows residual variance on indicator X1 at T2 ind2_t2 ~~ res2*ind2_t2 # This allows residual variance on indicator X2 at T2 ind3_t2 ~~ res3*ind3_t2 # This allows residual variance on indicator X3 at T2ind4_t2 ~~ res4*ind4_t2 # This allows residual variance on indicator X4 at T2ind1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind2_t1 ~ m2*1 # This estimates the intercept of X2 at T1ind3_t1 ~ m3*1 # This estimates the intercept of X3 at T1ind4_t1 ~ m4*1 # This estimates the intercept of X4 at T1ind1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind2_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind3_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind4_t2 ~ m4*1 # This estimates the intercept of X4 at T2sa04_01_t2 ~~ sa04_01_t2sa04_02_t2 ~~ sa04_02_t2sa04_03_t2 ~~ sa04_03_t2sa04_01_t2 ~ 1sa04_02_t2 ~ 1sa04_03_t2 ~ 1'# loop across 15 facets -> changes in ideal personalityfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal items =paste0(bfi_versions[[6]], item_nrs) template_filled <-str_replace_all(facet_template_mod_frequ_accept, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4])) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), facet_model_fit))} # loop across 15 facets -> changes in current personalityfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal items =paste0(bfi_versions[[5]], item_nrs) # current instead of ideal! template_filled <-str_replace_all(facet_template_mod_frequ_accept, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4])) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp7")), template_filled)) # current instead of ideal!eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[5], 6), "_frequ_hyp7")), facet_model_fit))} # we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for ideal personality ratings)facet_template_mod_frequ_accept_fu <-'facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2facet_t3 =~ 1*ind1_t3 + lamb2*ind2_t3 + lamb3*ind3_t3 + lamb4*ind4_t3 # This specifies the measurement model for facet at T3 (with equality constraints)frequ =~ 1*sa04_01_t2 + sa04_02_t2 + sa04_03_t2 # latent variable for moderatorfacet_t3 ~ 1*facet_t2 # This parameter regresses facet_t3 perfectly on facet_t2d_facet_1 =~ 1*facet_t3 # This defines the latent change score factor as measured perfectly by scores on facet_t3facet_t3 ~ 0*1 # This line constrains the intercept of facet_t3 to 0facet_t3 ~~ 0*facet_t3 # This fixes the variance of facet_t3 to 0d_facet_1 ~ 1 # This estimates the intercept of the change score facet_t2 ~ 1 # This estimates the intercept of facet_t2 d_facet_1 ~~ d_facet_1 # This estimates the variance of the change scores facet_t2 ~~ facet_t2 # This estimates the variance of facet_t2 facet_t2 ~~ d_facet_1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalfacet_t2 ~ frequ # This estimates the moderation effect on personality at T2d_facet_1 ~ frequ # This estimates the moderation effect on the change scorefrequ ~ 0*1 # This fixes the intercept of the moderator to 0frequ ~~ frequ # This estimates the variance of the moderatorind1_t2 ~~ ind1_t3 # This allows residual covariance on indicator X1 across T2 and T3ind2_t2 ~~ ind2_t3 # This allows residual covariance on indicator X2 across T2 and T3ind3_t2 ~~ ind3_t3 # This allows residual covariance on indicator X3 across T2 and T3ind4_t2 ~~ ind4_t3 # This allows residual covariance on indicator X4 across T2 and T3ind1_t2 ~~ res1*ind1_t2 # This allows residual variance on indicator X1 at T2 ind2_t2 ~~ res2*ind2_t2 # This allows residual variance on indicator X2 at T2ind3_t2 ~~ res3*ind3_t2 # This allows residual variance on indicator X3 at T2ind4_t2 ~~ res4*ind4_t2 # This allows residual variance on indicator X4 at T2ind1_t3 ~~ res1*ind1_t3 # This allows residual variance on indicator X1 at T3 ind2_t3 ~~ res2*ind2_t3 # This allows residual variance on indicator X2 at T3 ind3_t3 ~~ res3*ind3_t3 # This allows residual variance on indicator X3 at T3ind4_t3 ~~ res4*ind4_t3 # This allows residual variance on indicator X4 at T3ind1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind2_t2 ~ m2*1 # This estimates the intercept of X2 at T2ind3_t2 ~ m3*1 # This estimates the intercept of X3 at T2ind4_t2 ~ m4*1 # This estimates the intercept of X4 at T2ind1_t3 ~ 0*1 # This constrains the intercept of X1 to 0 at T3ind2_t3 ~ m2*1 # This estimates the intercept of X2 at T3ind3_t3 ~ m3*1 # This estimates the intercept of X3 at T3ind4_t3 ~ m4*1 # This estimates the intercept of X4 at T3sa04_01_t2 ~~ sa04_01_t2sa04_02_t2 ~~ sa04_02_t2sa04_03_t2 ~~ sa04_03_t2sa04_01_t2 ~ 1sa04_02_t2 ~ 1sa04_03_t2 ~ 1'# loop across 15 facets -> changes in ideal personalityfor (i in6:length(b5_vars)) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# use BFI version combined pre&post ideal items =paste0(bfi_versions[[6]], item_nrs) template_filled <-str_replace_all(facet_template_mod_frequ_accept_fu, c("facet"= short_name,"ind1"= items[1], "ind2"= items[2], "ind3"= items[3], "ind4"= items[4])) facet_model_fit <-lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7_fu")), template_filled))eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7_fu")), facet_model_fit))}
6.7.6 Big Five facets (ideal personality)
6.7.6.1 Sociability - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the sociability change score (ideal-personality) is not significantly different from zero (at p < .001), b = -0.065, p = 0.034.
6.7.6.2 Sociability - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with sociability change score (ideal-personality) is not significantly different from zero, b = -0.024, p = 0.639.
6.7.6.3 Assertiveness - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the assertiveness change score (ideal-personality) is not significantly different from zero, b = 0.031, p = 0.231.
6.7.6.4 Assertiveness - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with assertiveness change score (ideal-personality) is not significantly different from zero, b = -0.011, p = 0.8.
6.7.6.5 Energy - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the energy change score (ideal-personality) is not significantly different from zero, b = -0.002, p = 0.915.
6.7.6.6 Energy - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the energy change score (ideal-personality) is not significantly different from zero, b = 0.024, p = 0.409.
6.7.6.7 Compassion - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the compassion change score (ideal-personality) is not significantly different from zero, b = 0.01, p = 0.821.
6.7.6.8 Compassion - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the compassion change score (ideal-personality) is not significantly different from zero, b = 0, p = 0.996.
6.7.6.9 Respectfulness - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the respectfulness change score (ideal-personality) is not significantly different from zero, b = -0.005, p = 0.82.
6.7.6.10 Respectfulness - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with respectfulness change score (ideal-personality) is not significantly different from zero, b = 0.033, p = 0.348.
6.7.6.11 Trust - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the trust change score (ideal-personality) is not significantly different from zero, b = 0.013, p = 0.697.
6.7.6.12 Trust - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the trust change score (ideal-personality) is not significantly different from zero (at p < .001), b = 0.065, p = 0.232.
6.7.6.13 Organization - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the organization change score (ideal-personality) is not significantly different from zero, b = -0.029, p = 0.334.
6.7.6.14 Organization - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the organization change score (ideal-personality) is not significantly different from zero, b = 0.003, p = 0.947.
6.7.6.15 Productiveness - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the productiveness change score (ideal-personality) is not significantly different from zero, b = -0.035, p = 0.141.
6.7.6.16 Productiveness - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the productiveness change score (ideal-personality) is not significantly different from zero (at p < .001), b = 0.077, p = 0.053.
6.7.6.17 Responsibility - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the responsibility change score (ideal-personality) is not significantly different from zero, b = -0.03, p = 0.272.
6.7.6.18 Responsibility - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the responsibility change score (ideal-personality) is not significantly different from zero (at p < .001), b = 0.071, p = 0.105.
6.7.6.19 Anxiety - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the anxiety change score (ideal-personality) is not significantly different from zero, b = 0.004, p = 0.89.
6.7.6.20 Anxiety - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the anxiety change score (ideal-personality) is not significantly different from zero, b = 0.077, p = 0.135.
6.7.6.21 Depression - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the depression change score (ideal-personality) is not significantly different from zero, b = 0.006, p = 0.804.
6.7.6.22 Depression - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the depression change score (ideal-personality) is not significantly different from zero, b = 0.033, p = 0.472.
6.7.6.23 Volatility - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the volatility change score (ideal-personality) is not significantly different from zero, b = -0.055, p = 0.064.
6.7.6.24 Volatility - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the volatility change score (ideal-personality) is not significantly different from zero, b = -0.033, p = 0.545.
6.7.6.25 Curiosity - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the curiosity change score (ideal-personality) is not significantly different from zero, b = 0.029, p = 0.222.
6.7.6.26 Curiosity - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the curiosity change score (ideal-personality) is not significantly different from zero, b = 0.027, p = 0.52.
6.7.6.27 Aesthetic - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the aesthetic change score (ideal-personality) is not significantly different from zero, b = 0.006, p = 0.646.
6.7.6.28 Aesthetic - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the aesthetic change score (ideal-personality) is not significantly different from zero, b = 0.021, p = 0.47.
6.7.6.29 Imagination - specific, facet-level acceptance goal as moderator of change
Results summary (*sa07_$$_t1* = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the imagination change score (ideal-personality) is not significantly different from zero, b = -0.019, p = 0.566.
6.7.6.30 Imagination - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the imagination change score (ideal-personality) is not significantly different from zero, b = -0.031, p = 0.58.
6.7.7 Big Five facets (ideal personality - follow-up T3)
6.7.7.1 Sociability - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the sociability change score from T2 to T3 (ideal-personality) is not significantly different from zero (at p < .001), b = 0.028, p = 0.289.
6.7.7.2 Sociability - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with sociability change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.004, p = 0.941.
6.7.7.3 Assertiveness - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the assertiveness change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.011, p = 0.705.
6.7.7.4 Assertiveness - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with assertiveness change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.059, p = 0.245.
6.7.7.5 Energy - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the energy change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.007, p = 0.731.
6.7.7.6 Energy - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the energy change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.035, p = 0.29.
6.7.7.7 Compassion - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the compassion change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.005, p = 0.908.
6.7.7.8 Compassion - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the compassion change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.052, p = 0.487.
6.7.7.9 Respectfulness - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the respectfulness change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.013, p = 0.505.
6.7.7.10 Respectfulness - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with respectfulness change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.068, p = 0.021.
6.7.7.11 Trust - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the trust change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.01, p = 0.733.
6.7.7.12 Trust - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the trust change score from T2 to T3 (ideal-personality) is not significantly different from zero (at p < .001), b = -0.066, p = 0.112.
6.7.7.13 Organization - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the organization change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.015, p = 0.644.
6.7.7.14 Organization - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the organization change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.043, p = 0.365.
6.7.7.15 Productiveness - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the productiveness change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.01, p = 0.662.
6.7.7.16 Productiveness - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the productiveness change score from T2 to T3 (ideal-personality) is not significantly different from zero (at p < .001), b = -0.058, p = 0.16.
6.7.7.17 Responsibility - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the responsibility change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.022, p = 0.495.
6.7.7.18 Responsibility - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the responsibility change score from T2 to T3 (ideal-personality) is not significantly different from zero (at p < .001), b = -0.108, p = 0.047.
6.7.7.19 Anxiety - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the anxiety change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.031, p = 0.075.
6.7.7.20 Anxiety - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the anxiety change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.029, p = 0.378.
6.7.7.21 Depression - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the depression change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.021, p = 0.315.
6.7.7.22 Depression - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the depression change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.06, p = 0.086.
6.7.7.23 Volatility - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the volatility change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.003, p = 0.904.
6.7.7.24 Volatility - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the volatility change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.047, p = 0.333.
6.7.7.25 Curiosity - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the curiosity change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.015, p = 0.613.
6.7.7.26 Curiosity - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the curiosity change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.062, p = 0.205.
6.7.7.27 Aesthetic - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the aesthetic change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.017, p = 0.295.
6.7.7.28 Aesthetic - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the aesthetic change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = -0.019, p = 0.466.
6.7.7.29 Imagination - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the imagination change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.033, p = 0.303.
6.7.7.30 Imagination - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the imagination change score from T2 to T3 (ideal-personality) is not significantly different from zero, b = 0.005, p = 0.933.
6.7.8 Big Five facets (current personality)
6.7.8.1 Sociability - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the sociability change score (current-personality) is not significantly different from zero (at p < .001), b = 0.081, p = 0.027.
6.7.8.2 Sociability - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with sociability change score (current-personality) is not significantly different from zero, b = -0.026, p = 0.709.
6.7.8.3 Assertiveness - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the assertiveness change score (current-personality) is not significantly different from zero, b = 0.037, p = 0.213.
6.7.8.4 Assertiveness - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with assertiveness change score (current-personality) is not significantly different from zero, b = 0.071, p = 0.153.
6.7.8.5 Energy - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the energy change score (current-personality) is not significantly different from zero, b = 0.026, p = 0.12.
6.7.8.6 Energy - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the energy change score (current-personality) is not significantly different from zero, b = 0.031, p = 0.289.
6.7.8.7 Compassion - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the compassion change score (current-personality) is not significantly different from zero, b = -0.035, p = 0.402.
6.7.8.8 Compassion - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the compassion change score (current-personality) is not significantly different from zero, b = -0.024, p = 0.723.
6.7.8.9 Respectfulness - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the frequency of self-acceptance behaviors with the respectfulness change score (current-personality) is not significantly different from zero, b = -0.07, p = 0.059.
6.7.8.10 Respectfulness - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the respectfulness change score (current-personality) is not significantly different from zero, b = 0.044, p = 0.369.
6.7.8.11 Trust - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the trust change score (current-personality) is not significantly different from zero (at p < .001), b = 0.088, p = 0.016.
6.7.8.12 Trust - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the trust change score (current-personality) is not significantly different from zero, b = 0.047, p = 0.409.
6.7.8.13 Organization - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the organization change score (current-personality) is not significantly different from zero, b = 0.018, p = 0.661.
6.7.8.14 Organization - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the organization change score (current-personality) is not significantly different from zero, b = 0.027, p = 0.699.
6.7.8.15 Productiveness - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the productiveness change score (current-personality) is not significantly different from zero, b = 0.042, p = 0.231.
6.7.8.16 Productiveness - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the productiveness change score (current-personality) is not significantly different from zero, b = 0.085, p = 0.166.
6.7.8.17 Responsibility - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the responsibility change score (current-personality) is not significantly different from zero, b = 0.026, p = 0.183.
6.7.8.18 Responsibility - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the responsibility change score (current-personality) is not significantly different from zero, b = -0.009, p = 0.737.
6.7.8.19 Anxiety - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the anxiety change score (current-personality) is not significantly different from zero, b = 0.012, p = 0.769.
6.7.8.20 Anxiety - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the anxiety change score (current-personality) is not significantly different from zero (at p < .001), b = -0.183, p = 0.01.
6.7.8.21 Depression - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the depression change score (current-personality) is not significantly different from zero, b = -0.016, p = 0.479.
6.7.8.22 Depression - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the depression change score (current-personality) is not significantly different from zero (at p < .001), b = -0.1, p = 0.018.
6.7.8.23 Volatility - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the volatility change score (current-personality) is not significantly different from zero, b = -0.076, p = 0.065.
6.7.8.24 Volatility - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the volatility change score (current-personality) is significantly different from zero, b = 0.008, p = 0.906.
6.7.8.25 Curiosity - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the curiosity change score (current-personality) is not significantly different from zero (at p < .001), b = 0.057, p = 0.008.
6.7.8.26 Curiosity - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the curiosity change score (current-personality) is not significantly different from zero, b = 0.05, p = 0.194.
6.7.8.27 Aesthetic - specific, facet-level acceptance goal as moderator of change
Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the aesthetic change score (current-personality) is not significantly different from zero, b = -0.004, p = 0.779.
6.7.8.28 Aesthetic - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the aesthetic change score (current-personality) is not significantly different from zero, b = 0.045, p = 0.108.
6.7.8.29 Imagination - specific, facet-level acceptance goal as moderator of change
Results summary (*sa07_$$_t1* = trait/facet specific acceptance goal):
The moderation effect of the facet-specific acceptance goal with the imagination change score (current-personality) is not significantly different from zero, b = 0.04, p = 0.25.
6.7.8.30 Imagination - frequency of self-acceptance behaviors as moderator of change
Results summary (frequ = frequency of self-acceptance behavior):
The moderation effect of the frequency of self-acceptance behaviors with the imagination change score (current-personality) is not significantly different from zero, b = 0.016, p = 0.787.
Results summary across the Big Five traits: trait-specific acceptance goals (Goals) and frequency of self-acceptance behaviors (Frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.
kable(df_table_hyp7[1:10, ], digits =3)
trait
moderator
est_main
std_main
p_main
est_mod
std_mod
p_mod
extraversion
Goals
-0.020
-0.076
0.438
-0.042
-0.103
0.390
extraversion
Frequency
-0.019
-0.072
0.465
0.010
0.026
0.823
agreeableness
Goals
0.006
0.021
0.795
-0.017
-0.040
0.682
agreeableness
Frequency
0.006
0.023
0.770
0.031
0.078
0.422
conscientiousness
Goals
0.026
0.081
0.273
-0.056
-0.132
0.118
conscientiousness
Frequency
0.027
0.085
0.248
0.060
0.131
0.111
neuroticism
Goals
-0.007
-0.019
0.817
-0.014
-0.027
0.741
neuroticism
Frequency
-0.006
-0.018
0.821
0.029
0.057
0.569
openness
Goals
0.014
0.068
0.381
0.027
0.073
0.344
openness
Frequency
0.015
0.069
0.368
0.010
0.032
0.717
No significant main or moderator effects at the domain level (ideal personality) that are significantly different from zero.
Results summary across the Big Five facets: trait-specific acceptance goals (goals) and frequency of self-acceptance behaviors (frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.
kable(df_table_hyp7[11:40, ], digits =3)
trait
moderator
est_main
std_main
p_main
est_mod
std_mod
p_mod
sociability
Goals
-0.062
-0.323
0.043
-0.065
-0.341
0.034
sociability
Frequency
-0.062
-0.320
0.048
-0.024
-0.086
0.639
assertiveness
Goals
-0.025
-0.154
0.306
0.031
0.189
0.231
assertiveness
Frequency
-0.026
-0.155
0.312
-0.011
-0.046
0.800
energy
Goals
-0.002
-0.014
0.885
-0.002
-0.010
0.915
energy
Frequency
0.000
0.002
0.986
0.024
0.096
0.409
compassion
Goals
0.016
0.046
0.689
0.010
0.029
0.821
compassion
Frequency
0.020
0.053
0.646
0.000
-0.001
0.996
respectfulness
Goals
-0.001
-0.009
0.950
-0.005
-0.036
0.820
respectfulness
Frequency
-0.001
-0.006
0.968
0.033
0.157
0.348
trust
Goals
0.014
0.052
0.653
0.013
0.047
0.697
trust
Frequency
0.015
0.056
0.626
0.065
0.165
0.232
organization
Goals
0.005
0.019
0.861
-0.029
-0.112
0.334
organization
Frequency
0.005
0.019
0.860
0.003
0.009
0.947
productiveness
Goals
0.028
0.117
0.241
-0.035
-0.146
0.141
productiveness
Frequency
0.029
0.123
0.216
0.077
0.219
0.053
responsibility
Goals
0.017
0.063
0.534
-0.030
-0.113
0.272
responsibility
Frequency
0.018
0.066
0.512
0.071
0.181
0.105
anxiety
Goals
-0.019
-0.076
0.515
0.004
0.014
0.890
anxiety
Frequency
-0.020
-0.079
0.508
0.077
0.210
0.135
depression
Goals
-0.006
-0.024
0.813
0.006
0.024
0.804
depression
Frequency
-0.006
-0.022
0.821
0.033
0.084
0.472
volatility
Goals
-0.010
-0.038
0.758
-0.055
-0.216
0.064
volatility
Frequency
-0.009
-0.034
0.788
-0.033
-0.090
0.545
curiosity
Goals
0.017
0.081
0.532
0.029
0.138
0.222
curiosity
Frequency
0.017
0.081
0.540
0.027
0.090
0.520
aesthetic
Goals
0.020
0.119
0.240
0.006
0.037
0.646
aesthetic
Frequency
0.019
0.117
0.252
0.021
0.091
0.470
imagination
Goals
-0.012
-0.035
0.718
-0.019
-0.056
0.566
imagination
Frequency
-0.012
-0.035
0.717
-0.031
-0.066
0.580
No significant main or moderator effects at the domain level (ideal personality) that are significantly different from zero at p < .001.
Only at p < .05: The facet-specific acceptance goal moderates changes in ideal-level sociability.
Results summary across the Big Five traits: trait-specific acceptance goals (Goals) and frequency of self-acceptance behaviors (Frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.
kable(df_table_hyp7_curr[1:10, ], digits =3)
trait
moderator
est_main
std_main
p_main
est_mod
std_mod
p_mod
extraversion
Goals
0.092
0.345
0.000
0.052
0.139
0.244
extraversion
Frequency
0.089
0.342
0.000
0.041
0.108
0.310
agreeableness
Goals
0.024
0.120
0.175
-0.048
-0.163
0.154
agreeableness
Frequency
0.027
0.129
0.144
0.032
0.109
0.321
conscientiousness
Goals
0.074
0.212
0.004
0.042
0.092
0.253
conscientiousness
Frequency
0.074
0.213
0.004
0.029
0.057
0.478
neuroticism
Goals
-0.176
-0.474
0.000
-0.010
-0.018
0.824
neuroticism
Frequency
-0.176
-0.472
0.000
-0.118
-0.221
0.018
openness
Goals
0.075
0.317
0.001
0.052
0.130
0.201
openness
Frequency
0.076
0.317
0.001
0.059
0.168
0.179
Significant main effects except for agreeableness. No moderation effects at the domain level that are significantly different from zero at p < .001:
Only at p < .05: The frequency of self-acceptance behaviors moderates changes in current-level neuroticism.
Results summary across the Big Five facets: trait-specific acceptance goals (goals) and frequency of self-acceptance behaviors (frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.
kable(df_table_hyp7_curr[11:40, ], digits =3)
trait
moderator
est_main
std_main
p_main
est_mod
std_mod
p_mod
sociability
Goals
0.163
0.369
0.000
0.081
0.183
0.027
sociability
Frequency
0.161
0.368
0.000
-0.026
-0.042
0.709
assertiveness
Goals
0.060
0.219
0.050
0.037
0.135
0.213
assertiveness
Frequency
0.054
0.208
0.061
0.071
0.188
0.153
energy
Goals
0.046
0.257
0.017
0.026
0.147
0.120
energy
Frequency
0.047
0.257
0.020
0.031
0.116
0.289
compassion
Goals
0.045
0.118
0.213
-0.035
-0.093
0.402
compassion
Frequency
0.051
0.130
0.168
-0.024
-0.042
0.723
respectfulness
Goals
0.020
0.062
0.484
-0.070
-0.212
0.059
respectfulness
Frequency
0.024
0.072
0.418
0.044
0.092
0.369
trust
Goals
0.095
0.442
0.006
0.088
0.409
0.016
trust
Frequency
0.094
0.445
0.007
0.047
0.154
0.409
organization
Goals
0.067
0.142
0.109
0.018
0.037
0.661
organization
Frequency
0.065
0.139
0.117
0.027
0.040
0.699
productiveness
Goals
0.126
0.320
0.001
0.042
0.107
0.231
productiveness
Frequency
0.127
0.323
0.001
0.085
0.149
0.166
responsibility
Goals
0.019
0.107
0.291
0.026
0.141
0.183
responsibility
Frequency
0.019
0.106
0.296
-0.009
-0.035
0.737
anxiety
Goals
-0.185
-0.451
0.000
0.012
0.029
0.769
anxiety
Frequency
-0.189
-0.457
0.000
-0.183
-0.312
0.010
depression
Goals
-0.128
-0.446
0.000
-0.016
-0.055
0.479
depression
Frequency
-0.127
-0.446
0.000
-0.100
-0.245
0.018
volatility
Goals
-0.132
-0.325
0.001
-0.076
-0.187
0.065
volatility
Frequency
-0.133
-0.327
0.001
0.008
0.015
0.906
curiosity
Goals
0.061
NA
0.010
0.057
NA
0.008
curiosity
Frequency
0.060
NA
0.011
0.050
NA
0.194
aesthetic
Goals
-0.001
-0.011
0.923
-0.004
-0.031
0.779
aesthetic
Frequency
-0.001
-0.010
0.932
0.045
0.245
0.108
imagination
Goals
0.131
0.482
0.000
0.040
0.148
0.250
imagination
Frequency
0.132
0.485
0.000
0.016
0.041
0.787
No moderation effects at the facet level that are significantly different from zero at p < .001:
Only at p < .05: The facet-specific acceptance goal moderates changes in current-level trust.
Only at p < .05: The frequency of self-acceptance behaviors moderates changes in current-level anxiety.
Only at p < .05: The frequency of self-acceptance behaviors moderates changes in current-level depression.
Only at p < .05: The facet-specific acceptance goal moderates changes in current-level curiosity.
6.8 Differences in change across intervention groups (Hyp 6 in paper)
Change in psychological well-being indicators as well as the difference between real- and ideal-personality will differ across groups at follow-up. Based on exploratory results from Study 1, we expect that the self-acceptance intervention leads to more pronounced well-being gains and less pronounced differences between current- and ideal-personality personality compared to the self-improvement intervention.
6.8.1 Latent well-being change: acceptance vs. improvement
6.8.1.1 Life satisfaction
Life satisfaction: fitting multi-group models
Show the code
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)# configural invariancemi_lcs_swls_group_config <-'swls_t1 =~ 1*sw06_01_t1 + c("lamb2a", "lamb2b")*sw06_02_t1 + c("lamb3a", "lamb3b")*sw06_03_t1 + c("lamb4a", "lamb4b")*sw06_04_t1 # This specifies the measurement model for swls_t1 swls_t2 =~ 1*sw06_01_t2 + c("lamb2a", "lamb2b")*sw06_02_t2 + c("lamb3a", "lamb3b")*sw06_03_t2 + c("lamb4a", "lamb4b")*sw06_04_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadingsswls_t2 ~ 1*swls_t1 # This parameter regresses swls_t2 perfectly on swls_t1d_swls_1 =~ 1*swls_t2 # This defines the latent change score factor as measured perfectly by scores on swls_t2swls_t2 ~ 0*1 # This line constrains the intercept of swls_t2 to 0swls_t2 ~~ 0*swls_t2 # This fixes the variance of swls_t2 to 0d_swls_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score swls_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of swls_t1 d_swls_1 ~~ c("d_var_a", "d_var_b")*d_swls_1 # This estimates the variance of the change scores swls_t1 ~~ c("wb_var_a", "wb_var_b")*swls_t1 # This estimates the variance of the swls_t1 d_swls_1 ~~ c("fb_a", "fb_b")*swls_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalsw06_01_t1 ~~ c("cov1a", "cov1b")*sw06_01_t2 # This allows residual covariance on indicator X1 across T1 and T2sw06_02_t1 ~~ c("cov2a", "cov2b")*sw06_02_t2 # This allows residual covariance on indicator X2 across T1 and T2sw06_03_t1 ~~ c("cov3a", "cov3b")*sw06_03_t2 # This allows residual covariance on indicator X3 across T1 and T2sw06_04_t1 ~~ c("cov4a", "cov4b")*sw06_04_t2 # This allows residual covariance on indicator X4 across T1 and T2sw06_01_t1 ~~ c("res1a", "res1b")*sw06_01_t1 # This allows residual variance on indicator X1 at T1 sw06_02_t1 ~~ c("res2a", "res2b")*sw06_02_t1 # This allows residual variance on indicator X2 at T1sw06_03_t1 ~~ c("res3a", "res3b")*sw06_03_t1 # This allows residual variance on indicator X3 at T1sw06_04_t1 ~~ c("res4a", "res4b")*sw06_04_t1 # This allows residual variance on indicator X4 at T1sw06_01_t2 ~~ c("res1a", "res1b")*sw06_01_t2 # This allows residual variance on indicator X1 at T2 sw06_02_t2 ~~ c("res2a", "res2b")*sw06_02_t2 # This allows residual variance on indicator X2 at T2 sw06_03_t2 ~~ c("res3a", "res3b")*sw06_03_t2 # This allows residual variance on indicator X3 at T2sw06_04_t2 ~~ c("res4a", "res4b")*sw06_04_t2 # This allows residual variance on indicator X4 at T2sw06_01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1sw06_02_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1sw06_03_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1sw06_04_t1 ~ c("m4a", "m4b")*1 # This estimates the intercept of X4 at T1sw06_01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2sw06_02_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2sw06_03_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2sw06_04_t2 ~ c("m4a", "m4b")*1 # This estimates the intercept of X4 at T2'lcs_swls_group_config <-sem(mi_lcs_swls_group_config, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando")# weak invariancemi_lcs_swls_group_weak <-'swls_t1 =~ 1*sw06_01_t1 + c("lamb2", "lamb2")*sw06_02_t1 + c("lamb3", "lamb3")*sw06_03_t1 + c("lamb4", "lamb4")*sw06_04_t1 # This specifies the measurement model for swls_t1 swls_t2 =~ 1*sw06_01_t2 + c("lamb2", "lamb2")*sw06_02_t2 + c("lamb3", "lamb3")*sw06_03_t2 + c("lamb4", "lamb4")*sw06_04_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadingsswls_t2 ~ 1*swls_t1 # This parameter regresses swls_t2 perfectly on swls_t1d_swls_1 =~ 1*swls_t2 # This defines the latent change score factor as measured perfectly by scores on swls_t2swls_t2 ~ 0*1 # This line constrains the intercept of swls_t2 to 0swls_t2 ~~ 0*swls_t2 # This fixes the variance of swls_t2 to 0d_swls_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score swls_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of swls_t1 d_swls_1 ~~ c("d_var_a", "d_var_b")*d_swls_1 # This estimates the variance of the change scores swls_t1 ~~ c("wb_var_a", "wb_var_b")*swls_t1 # This estimates the variance of the swls_t1 d_swls_1 ~~ c("fb_a", "fb_b")*swls_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalsw06_01_t1 ~~ c("cov1a", "cov1b")*sw06_01_t2 # This allows residual covariance on indicator X1 across T1 and T2sw06_02_t1 ~~ c("cov2a", "cov2b")*sw06_02_t2 # This allows residual covariance on indicator X2 across T1 and T2sw06_03_t1 ~~ c("cov3a", "cov3b")*sw06_03_t2 # This allows residual covariance on indicator X3 across T1 and T2sw06_04_t1 ~~ c("cov4a", "cov4b")*sw06_04_t2 # This allows residual covariance on indicator X4 across T1 and T2sw06_01_t1 ~~ c("res1a", "res1b")*sw06_01_t1 # This allows residual variance on indicator X1 at T1 sw06_02_t1 ~~ c("res2a", "res2b")*sw06_02_t1 # This allows residual variance on indicator X2 at T1sw06_03_t1 ~~ c("res3a", "res3b")*sw06_03_t1 # This allows residual variance on indicator X3 at T1sw06_04_t1 ~~ c("res4a", "res4b")*sw06_04_t1 # This allows residual variance on indicator X4 at T1sw06_01_t2 ~~ c("res1a", "res1b")*sw06_01_t2 # This allows residual variance on indicator X1 at T2 sw06_02_t2 ~~ c("res2a", "res2b")*sw06_02_t2 # This allows residual variance on indicator X2 at T2 sw06_03_t2 ~~ c("res3a", "res3b")*sw06_03_t2 # This allows residual variance on indicator X3 at T2sw06_04_t2 ~~ c("res4a", "res4b")*sw06_04_t2 # This allows residual variance on indicator X4 at T2sw06_01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1sw06_02_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1sw06_03_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1sw06_04_t1 ~ c("m4a", "m4b")*1 # This estimates the intercept of X4 at T1sw06_01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2sw06_02_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2sw06_03_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2sw06_04_t2 ~ c("m4a", "m4b")*1 # This estimates the intercept of X4 at T2'lcs_swls_group_weak <-sem(mi_lcs_swls_group_weak, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal ="loadings")# strong invariancemi_lcs_swls_group_strong <-'swls_t1 =~ 1*sw06_01_t1 + c("lamb2", "lamb2")*sw06_02_t1 + c("lamb3", "lamb3")*sw06_03_t1 + c("lamb4", "lamb4")*sw06_04_t1 # This specifies the measurement model for swls_t1 swls_t2 =~ 1*sw06_01_t2 + c("lamb2", "lamb2")*sw06_02_t2 + c("lamb3", "lamb3")*sw06_03_t2 + c("lamb4", "lamb4")*sw06_04_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadingsswls_t2 ~ 1*swls_t1 # This parameter regresses swls_t2 perfectly on swls_t1d_swls_1 =~ 1*swls_t2 # This defines the latent change score factor as measured perfectly by scores on swls_t2swls_t2 ~ 0*1 # This line constrains the intercept of swls_t2 to 0swls_t2 ~~ 0*swls_t2 # This fixes the variance of swls_t2 to 0d_swls_1 ~ c("d_int", "d_int")*1 # This estimates the intercept of the change score swls_t1 ~ c("wb_int", "wb_int")*1 # This estimates the intercept of swls_t1 d_swls_1 ~~ c("d_var_a", "d_var_b")*d_swls_1 # This estimates the variance of the change scores swls_t1 ~~ c("wb_var_a", "wb_var_b")*swls_t1 # This estimates the variance of the swls_t1 d_swls_1 ~~ c("fb_a", "fb_b")*swls_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalsw06_01_t1 ~~ c("cov1a", "cov1b")*sw06_01_t2 # This allows residual covariance on indicator X1 across T1 and T2sw06_02_t1 ~~ c("cov2a", "cov2b")*sw06_02_t2 # This allows residual covariance on indicator X2 across T1 and T2sw06_03_t1 ~~ c("cov3a", "cov3b")*sw06_03_t2 # This allows residual covariance on indicator X3 across T1 and T2sw06_04_t1 ~~ c("cov4a", "cov4b")*sw06_04_t2 # This allows residual covariance on indicator X4 across T1 and T2sw06_01_t1 ~~ c("res1a", "res1b")*sw06_01_t1 # This allows residual variance on indicator X1 at T1 sw06_02_t1 ~~ c("res2a", "res2b")*sw06_02_t1 # This allows residual variance on indicator X2 at T1sw06_03_t1 ~~ c("res3a", "res3b")*sw06_03_t1 # This allows residual variance on indicator X3 at T1sw06_04_t1 ~~ c("res4a", "res4b")*sw06_04_t1 # This allows residual variance on indicator X4 at T1sw06_01_t2 ~~ c("res1a", "res1b")*sw06_01_t2 # This allows residual variance on indicator X1 at T2 sw06_02_t2 ~~ c("res2a", "res2b")*sw06_02_t2 # This allows residual variance on indicator X2 at T2 sw06_03_t2 ~~ c("res3a", "res3b")*sw06_03_t2 # This allows residual variance on indicator X3 at T2sw06_04_t2 ~~ c("res4a", "res4b")*sw06_04_t2 # This allows residual variance on indicator X4 at T2sw06_01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1sw06_02_t1 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T1sw06_03_t1 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T1sw06_04_t1 ~ c("m4", "m4")*1 # This estimates the intercept of X4 at T1sw06_01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2sw06_02_t2 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T2sw06_03_t2 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T2sw06_04_t2 ~ c("m4", "m4")*1 # This estimates the intercept of X4 at T2'lcs_swls_group_strong <-sem(mi_lcs_swls_group_strong, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal =c("intercepts", "loadings"))
Life satisfaction: results
# model comparison tests for measurement invariancelavTestLRT(lcs_swls_group_config, lcs_swls_group_weak, lcs_swls_group_strong)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
lcs_swls_group_config 50 13077 13248 125.00
lcs_swls_group_weak 53 13073 13231 127.59 3.1604 3 0.3675
lcs_swls_group_strong 58 13066 13202 130.93 3.3369 5 0.6482
# show model with varying latent change parameters # -> key parameter is "d_swls_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_swls <- broom::tidy(lcs_swls_group_weak, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="swls"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_swls_1 ~1 "))kable(params_main_lcs_swls, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_swls_1 ~1
d_int_a
0.246
0.248
0.419
5.644
0
d_swls_1 ~1
d_int_b
0.296
0.298
0.415
6.155
0
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(lcs_swls_group_strong, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="swls"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_swls_1 ~1 ")), digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_swls_1 ~1
d_int
0.267
0.269
0.454
8.195
0
d_swls_1 ~1
d_int
0.267
0.269
0.374
8.195
0
Slightly more positive change in life satisfaction in the self-improvement group but no substantial differences according to the LRTs.
# whole model (weak invariance)summary(lcs_swls_group_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)# configural invariancemi_lcs_meaning_group_config <-'meaning_t1 =~ 1*meaning_par1_t1 + c("lamb2a", "lamb2b")*meaning_par2_t1 + c("lamb3a", "lamb3b")*meaning_par3_t1 # This specifies the measurement model for meaning_t1 meaning_t2 =~ 1*meaning_par1_t2 + c("lamb2a", "lamb2b")*meaning_par2_t2 + c("lamb3a", "lamb3b")*meaning_par3_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadingsmeaning_t2 ~ 1*meaning_t1 # This parameter regresses meaning_t2 perfectly on meaning_t1d_meaning_1 =~ 1*meaning_t2 # This defines the latent change score factor as measured perfectly by scores on meaning_t2meaning_t2 ~ 0*1 # This line constrains the intercept of meaning_t2 to 0meaning_t2 ~~ 0*meaning_t2 # This fixes the variance of meaning_t2 to 0d_meaning_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score meaning_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of meaning_t1 d_meaning_1 ~~ c("d_var_a", "d_var_b")*d_meaning_1 # This estimates the variance of the change scores meaning_t1 ~~ c("wb_var_a", "wb_var_b")*meaning_t1 # This estimates the variance of the meaning_t1 d_meaning_1 ~~ c("fb_a", "fb_b")*meaning_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalmeaning_par1_t1 ~~ c("cov1a", "cov1b")*meaning_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2meaning_par2_t1 ~~ c("cov2a", "cov2b")*meaning_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2meaning_par3_t1 ~~ c("cov3a", "cov3b")*meaning_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2meaning_par1_t1 ~~ c("res1a", "res1b")*meaning_par1_t1 # This allows residual variance on indicator X1 at T1 meaning_par2_t1 ~~ c("res2a", "res2b")*meaning_par2_t1 # This allows residual variance on indicator X2 at T1meaning_par3_t1 ~~ c("res3a", "res3b")*meaning_par3_t1 # This allows residual variance on indicator X3 at T1meaning_par1_t2 ~~ c("res1a", "res1b")*meaning_par1_t2 # This allows residual variance on indicator X1 at T2 meaning_par2_t2 ~~ c("res2a", "res2b")*meaning_par2_t2 # This allows residual variance on indicator X2 at T2 meaning_par3_t2 ~~ c("res3a", "res3b")*meaning_par3_t2 # This allows residual variance on indicator X3 at T2meaning_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1meaning_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1meaning_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1meaning_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2meaning_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2meaning_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_meaning_group_config <-sem(mi_lcs_meaning_group_config, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando")# weak invariancemi_lcs_meaning_group_weak <-'meaning_t1 =~ 1*meaning_par1_t1 + c("lamb2", "lamb2")*meaning_par2_t1 + c("lamb3", "lamb3")*meaning_par3_t1 # This specifies the measurement model for meaning_t1 meaning_t2 =~ 1*meaning_par1_t2 + c("lamb2", "lamb2")*meaning_par2_t2 + c("lamb3", "lamb3")*meaning_par3_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadingsmeaning_t2 ~ 1*meaning_t1 # This parameter regresses meaning_t2 perfectly on meaning_t1d_meaning_1 =~ 1*meaning_t2 # This defines the latent change score factor as measured perfectly by scores on meaning_t2meaning_t2 ~ 0*1 # This line constrains the intercept of meaning_t2 to 0meaning_t2 ~~ 0*meaning_t2 # This fixes the variance of meaning_t2 to 0d_meaning_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score meaning_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of meaning_t1 d_meaning_1 ~~ c("d_var_a", "d_var_b")*d_meaning_1 # This estimates the variance of the change scores meaning_t1 ~~ c("wb_var_a", "wb_var_b")*meaning_t1 # This estimates the variance of the meaning_t1 d_meaning_1 ~~ c("fb_a", "fb_b")*meaning_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalmeaning_par1_t1 ~~ c("cov1a", "cov1b")*meaning_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2meaning_par2_t1 ~~ c("cov2a", "cov2b")*meaning_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2meaning_par3_t1 ~~ c("cov3a", "cov3b")*meaning_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2meaning_par1_t1 ~~ c("res1a", "res1b")*meaning_par1_t1 # This allows residual variance on indicator X1 at T1 meaning_par2_t1 ~~ c("res2a", "res2b")*meaning_par2_t1 # This allows residual variance on indicator X2 at T1meaning_par3_t1 ~~ c("res3a", "res3b")*meaning_par3_t1 # This allows residual variance on indicator X3 at T1meaning_par1_t2 ~~ c("res1a", "res1b")*meaning_par1_t2 # This allows residual variance on indicator X1 at T2 meaning_par2_t2 ~~ c("res2a", "res2b")*meaning_par2_t2 # This allows residual variance on indicator X2 at T2 meaning_par3_t2 ~~ c("res3a", "res3b")*meaning_par3_t2 # This allows residual variance on indicator X3 at T2meaning_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1meaning_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1meaning_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1meaning_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2meaning_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2meaning_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_meaning_group_weak <-sem(mi_lcs_meaning_group_weak, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal ="loadings")# strong invariancemi_lcs_meaning_group_strong <-'meaning_t1 =~ 1*meaning_par1_t1 + c("lamb2", "lamb2")*meaning_par2_t1 + c("lamb3", "lamb3")*meaning_par3_t1 # This specifies the measurement model for meaning_t1 meaning_t2 =~ 1*meaning_par1_t2 + c("lamb2", "lamb2")*meaning_par2_t2 + c("lamb3", "lamb3")*meaning_par3_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadingsmeaning_t2 ~ 1*meaning_t1 # This parameter regresses meaning_t2 perfectly on meaning_t1d_meaning_1 =~ 1*meaning_t2 # This defines the latent change score factor as measured perfectly by scores on meaning_t2meaning_t2 ~ 0*1 # This line constrains the intercept of meaning_t2 to 0meaning_t2 ~~ 0*meaning_t2 # This fixes the variance of meaning_t2 to 0d_meaning_1 ~ c("d_int", "d_int")*1 # This estimates the intercept of the change score meaning_t1 ~ c("wb_int", "wb_int")*1 # This estimates the intercept of meaning_t1 d_meaning_1 ~~ c("d_var_a", "d_var_b")*d_meaning_1 # This estimates the variance of the change scores meaning_t1 ~~ c("wb_var_a", "wb_var_b")*meaning_t1 # This estimates the variance of the meaning_t1 d_meaning_1 ~~ c("fb_a", "fb_b")*meaning_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalmeaning_par1_t1 ~~ c("cov1a", "cov1b")*meaning_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2meaning_par2_t1 ~~ c("cov2a", "cov2b")*meaning_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2meaning_par3_t1 ~~ c("cov3a", "cov3b")*meaning_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2meaning_par1_t1 ~~ c("res1a", "res1b")*meaning_par1_t1 # This allows residual variance on indicator X1 at T1 meaning_par2_t1 ~~ c("res2a", "res2b")*meaning_par2_t1 # This allows residual variance on indicator X2 at T1meaning_par3_t1 ~~ c("res3a", "res3b")*meaning_par3_t1 # This allows residual variance on indicator X3 at T1meaning_par1_t2 ~~ c("res1a", "res1b")*meaning_par1_t2 # This allows residual variance on indicator X1 at T2 meaning_par2_t2 ~~ c("res2a", "res2b")*meaning_par2_t2 # This allows residual variance on indicator X2 at T2 meaning_par3_t2 ~~ c("res3a", "res3b")*meaning_par3_t2 # This allows residual variance on indicator X3 at T2meaning_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1meaning_par2_t1 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T1meaning_par3_t1 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T1meaning_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2meaning_par2_t2 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T2meaning_par3_t2 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T2'lcs_meaning_group_strong <-sem(mi_lcs_meaning_group_strong, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal =c("intercepts", "loadings"))
Meaning in life: results
# model comparison tests for measurement invariancelavTestLRT(lcs_meaning_group_config, lcs_meaning_group_weak, lcs_meaning_group_strong)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
lcs_meaning_group_config 24 9552.9 9688.3 49.776
lcs_meaning_group_weak 26 9550.4 9676.8 51.287 1.5699 2 0.4561
lcs_meaning_group_strong 30 9543.8 9652.0 52.632 1.3465 4 0.8534
# show model with varying latent change parameters # -> key parameter is "d_meaning_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_meaning <- broom::tidy(lcs_meaning_group_weak, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="meaning"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_meaning_1 ~1 "))kable(params_main_lcs_meaning, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_meaning_1 ~1
d_int_a
0.196
0.169
0.321
4.679
0
d_meaning_1 ~1
d_int_b
0.230
0.198
0.319
4.855
0
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(lcs_meaning_group_strong, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="meaning"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_meaning_1 ~1 ")), digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_meaning_1 ~1
d_int
0.211
0.181
0.344
6.659
0
d_meaning_1 ~1
d_int
0.211
0.181
0.292
6.659
0
Slightly more positive change in meaning in life in the Self-Improvement group but no substantial differences according to the LRTs.
# whole model (weak invariance)summary(lcs_meaning_group_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)# configural invariancemi_lcs_selfes_group_config <-'selfes_t1 =~ 1*selfes_par1_t1 + c("lamb2a", "lamb2b")*selfes_par2_t1 + c("lamb3a", "lamb3b")*selfes_par3_t1 # This specifies the measurement model for selfes_t1 selfes_t2 =~ 1*selfes_par1_t2 + c("lamb2a", "lamb2b")*selfes_par2_t2 + c("lamb3a", "lamb3b")*selfes_par3_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadingsselfes_t2 ~ 1*selfes_t1 # This parameter regresses selfes_t2 perfectly on selfes_t1d_selfes_1 =~ 1*selfes_t2 # This defines the latent change score factor as measured perfectly by scores on selfes_t2selfes_t2 ~ 0*1 # This line constrains the intercept of selfes_t2 to 0selfes_t2 ~~ 0*selfes_t2 # This fixes the variance of selfes_t2 to 0d_selfes_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score selfes_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of selfes_t1 d_selfes_1 ~~ c("d_var_a", "d_var_b")*d_selfes_1 # This estimates the variance of the change scores selfes_t1 ~~ c("wb_var_a", "wb_var_b")*selfes_t1 # This estimates the variance of the selfes_t1 d_selfes_1 ~~ c("fb_a", "fb_b")*selfes_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalselfes_par1_t1 ~~ c("cov1a", "cov1b")*selfes_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2selfes_par2_t1 ~~ c("cov2a", "cov2b")*selfes_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2selfes_par3_t1 ~~ c("cov3a", "cov3b")*selfes_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2selfes_par1_t1 ~~ c("res1a", "res1b")*selfes_par1_t1 # This allows residual variance on indicator X1 at T1 selfes_par2_t1 ~~ c("res2a", "res2b")*selfes_par2_t1 # This allows residual variance on indicator X2 at T1selfes_par3_t1 ~~ c("res3a", "res3b")*selfes_par3_t1 # This allows residual variance on indicator X3 at T1selfes_par1_t2 ~~ c("res1a", "res1b")*selfes_par1_t2 # This allows residual variance on indicator X1 at T2 selfes_par2_t2 ~~ c("res2a", "res2b")*selfes_par2_t2 # This allows residual variance on indicator X2 at T2 selfes_par3_t2 ~~ c("res3a", "res3b")*selfes_par3_t2 # This allows residual variance on indicator X3 at T2selfes_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1selfes_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1selfes_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1selfes_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2selfes_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2selfes_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_selfes_group_config <-sem(mi_lcs_selfes_group_config, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando")# weak invariancemi_lcs_selfes_group_weak <-'selfes_t1 =~ 1*selfes_par1_t1 + c("lamb2", "lamb2")*selfes_par2_t1 + c("lamb3", "lamb3")*selfes_par3_t1 # This specifies the measurement model for selfes_t1 selfes_t2 =~ 1*selfes_par1_t2 + c("lamb2", "lamb2")*selfes_par2_t2 + c("lamb3", "lamb3")*selfes_par3_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadingsselfes_t2 ~ 1*selfes_t1 # This parameter regresses selfes_t2 perfectly on selfes_t1d_selfes_1 =~ 1*selfes_t2 # This defines the latent change score factor as measured perfectly by scores on selfes_t2selfes_t2 ~ 0*1 # This line constrains the intercept of selfes_t2 to 0selfes_t2 ~~ 0*selfes_t2 # This fixes the variance of selfes_t2 to 0d_selfes_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score selfes_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of selfes_t1 d_selfes_1 ~~ c("d_var_a", "d_var_b")*d_selfes_1 # This estimates the variance of the change scores selfes_t1 ~~ c("wb_var_a", "wb_var_b")*selfes_t1 # This estimates the variance of the selfes_t1 d_selfes_1 ~~ c("fb_a", "fb_b")*selfes_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalselfes_par1_t1 ~~ c("cov1a", "cov1b")*selfes_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2selfes_par2_t1 ~~ c("cov2a", "cov2b")*selfes_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2selfes_par3_t1 ~~ c("cov3a", "cov3b")*selfes_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2selfes_par1_t1 ~~ c("res1a", "res1b")*selfes_par1_t1 # This allows residual variance on indicator X1 at T1 selfes_par2_t1 ~~ c("res2a", "res2b")*selfes_par2_t1 # This allows residual variance on indicator X2 at T1selfes_par3_t1 ~~ c("res3a", "res3b")*selfes_par3_t1 # This allows residual variance on indicator X3 at T1selfes_par1_t2 ~~ c("res1a", "res1b")*selfes_par1_t2 # This allows residual variance on indicator X1 at T2 selfes_par2_t2 ~~ c("res2a", "res2b")*selfes_par2_t2 # This allows residual variance on indicator X2 at T2 selfes_par3_t2 ~~ c("res3a", "res3b")*selfes_par3_t2 # This allows residual variance on indicator X3 at T2selfes_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1selfes_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1selfes_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1selfes_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2selfes_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2selfes_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_selfes_group_weak <-sem(mi_lcs_selfes_group_weak, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal ="loadings")# strong invariancemi_lcs_selfes_group_strong <-'selfes_t1 =~ 1*selfes_par1_t1 + c("lamb2", "lamb2")*selfes_par2_t1 + c("lamb3", "lamb3")*selfes_par3_t1 # This specifies the measurement model for selfes_t1 selfes_t2 =~ 1*selfes_par1_t2 + c("lamb2", "lamb2")*selfes_par2_t2 + c("lamb3", "lamb3")*selfes_par3_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadingsselfes_t2 ~ 1*selfes_t1 # This parameter regresses selfes_t2 perfectly on selfes_t1d_selfes_1 =~ 1*selfes_t2 # This defines the latent change score factor as measured perfectly by scores on selfes_t2selfes_t2 ~ 0*1 # This line constrains the intercept of selfes_t2 to 0selfes_t2 ~~ 0*selfes_t2 # This fixes the variance of selfes_t2 to 0d_selfes_1 ~ c("d_int", "d_int")*1 # This estimates the intercept of the change score selfes_t1 ~ c("wb_int", "wb_int")*1 # This estimates the intercept of selfes_t1 d_selfes_1 ~~ c("d_var_a", "d_var_b")*d_selfes_1 # This estimates the variance of the change scores selfes_t1 ~~ c("wb_var_a", "wb_var_b")*selfes_t1 # This estimates the variance of the selfes_t1 d_selfes_1 ~~ c("fb_a", "fb_b")*selfes_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalselfes_par1_t1 ~~ c("cov1a", "cov1b")*selfes_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2selfes_par2_t1 ~~ c("cov2a", "cov2b")*selfes_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2selfes_par3_t1 ~~ c("cov3a", "cov3b")*selfes_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2selfes_par1_t1 ~~ c("res1a", "res1b")*selfes_par1_t1 # This allows residual variance on indicator X1 at T1 selfes_par2_t1 ~~ c("res2a", "res2b")*selfes_par2_t1 # This allows residual variance on indicator X2 at T1selfes_par3_t1 ~~ c("res3a", "res3b")*selfes_par3_t1 # This allows residual variance on indicator X3 at T1selfes_par1_t2 ~~ c("res1a", "res1b")*selfes_par1_t2 # This allows residual variance on indicator X1 at T2 selfes_par2_t2 ~~ c("res2a", "res2b")*selfes_par2_t2 # This allows residual variance on indicator X2 at T2 selfes_par3_t2 ~~ c("res3a", "res3b")*selfes_par3_t2 # This allows residual variance on indicator X3 at T2selfes_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1selfes_par2_t1 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T1selfes_par3_t1 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T1selfes_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2selfes_par2_t2 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T2selfes_par3_t2 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T2'lcs_selfes_group_strong <-sem(mi_lcs_selfes_group_strong, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal =c("intercepts", "loadings"))
Self-esteem: results
# model comparison tests for measurement invariancelavTestLRT(lcs_selfes_group_config, lcs_selfes_group_weak, lcs_selfes_group_strong)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
lcs_selfes_group_config 24 7216.5 7351.9 16.395
lcs_selfes_group_weak 26 7213.2 7339.6 17.124 0.76343 2 0.6827
lcs_selfes_group_strong 30 7208.1 7316.4 19.974 2.84132 4 0.5847
# show model with varying latent change parameters # -> key parameter is "d_selfes_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_selfes <- broom::tidy(lcs_selfes_group_weak, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="selfes"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_selfes_1 ~1 "))kable(params_main_lcs_selfes, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_selfes_1 ~1
d_int_a
0.240
0.273
0.523
7.667
0
d_selfes_1 ~1
d_int_b
0.287
0.326
0.570
8.640
0
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(lcs_selfes_group_strong, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="selfes"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_selfes_1 ~1 ")), digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_selfes_1 ~1
d_int
0.264
0.3
0.574
11.621
0
d_selfes_1 ~1
d_int
0.264
0.3
0.524
11.621
0
Slightly more positive change in self-esteem in the self-improvement group but no substantial differences according to the LRTs.
# whole model (weak invariance)summary(lcs_selfes_group_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)# configural invariancemi_lcs_concept_group_config <-'concept_t1 =~ 1*concept_par1_t1 + c("lamb2a", "lamb2b")*concept_par2_t1 + c("lamb3a", "lamb3b")*concept_par3_t1 # This specifies the measurement model for concept_t1 concept_t2 =~ 1*concept_par1_t2 + c("lamb2a", "lamb2b")*concept_par2_t2 + c("lamb3a", "lamb3b")*concept_par3_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadingsconcept_t2 ~ 1*concept_t1 # This parameter regresses concept_t2 perfectly on concept_t1d_concept_1 =~ 1*concept_t2 # This defines the latent change score factor as measured perfectly by scores on concept_t2concept_t2 ~ 0*1 # This line constrains the intercept of concept_t2 to 0concept_t2 ~~ 0*concept_t2 # This fixes the variance of concept_t2 to 0d_concept_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score concept_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of concept_t1 d_concept_1 ~~ c("d_var_a", "d_var_b")*d_concept_1 # This estimates the variance of the change scores concept_t1 ~~ c("wb_var_a", "wb_var_b")*concept_t1 # This estimates the variance of the concept_t1 d_concept_1 ~~ c("fb_a", "fb_b")*concept_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalconcept_par1_t1 ~~ c("cov1a", "cov1b")*concept_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2concept_par2_t1 ~~ c("cov2a", "cov2b")*concept_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2concept_par3_t1 ~~ c("cov3a", "cov3b")*concept_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2concept_par1_t1 ~~ c("res1a", "res1b")*concept_par1_t1 # This allows residual variance on indicator X1 at T1 concept_par2_t1 ~~ c("res2a", "res2b")*concept_par2_t1 # This allows residual variance on indicator X2 at T1concept_par3_t1 ~~ c("res3a", "res3b")*concept_par3_t1 # This allows residual variance on indicator X3 at T1concept_par1_t2 ~~ c("res1a", "res1b")*concept_par1_t2 # This allows residual variance on indicator X1 at T2 concept_par2_t2 ~~ c("res2a", "res2b")*concept_par2_t2 # This allows residual variance on indicator X2 at T2 concept_par3_t2 ~~ c("res3a", "res3b")*concept_par3_t2 # This allows residual variance on indicator X3 at T2concept_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1concept_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1concept_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1concept_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2concept_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2concept_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_concept_group_config <-sem(mi_lcs_concept_group_config, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando")# weak invariancemi_lcs_concept_group_weak <-'concept_t1 =~ 1*concept_par1_t1 + c("lamb2", "lamb2")*concept_par2_t1 + c("lamb3", "lamb3")*concept_par3_t1 # This specifies the measurement model for concept_t1 concept_t2 =~ 1*concept_par1_t2 + c("lamb2", "lamb2")*concept_par2_t2 + c("lamb3", "lamb3")*concept_par3_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadingsconcept_t2 ~ 1*concept_t1 # This parameter regresses concept_t2 perfectly on concept_t1d_concept_1 =~ 1*concept_t2 # This defines the latent change score factor as measured perfectly by scores on concept_t2concept_t2 ~ 0*1 # This line constrains the intercept of concept_t2 to 0concept_t2 ~~ 0*concept_t2 # This fixes the variance of concept_t2 to 0d_concept_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score concept_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of concept_t1 d_concept_1 ~~ c("d_var_a", "d_var_b")*d_concept_1 # This estimates the variance of the change scores concept_t1 ~~ c("wb_var_a", "wb_var_b")*concept_t1 # This estimates the variance of the concept_t1 d_concept_1 ~~ c("fb_a", "fb_b")*concept_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalconcept_par1_t1 ~~ c("cov1a", "cov1b")*concept_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2concept_par2_t1 ~~ c("cov2a", "cov2b")*concept_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2concept_par3_t1 ~~ c("cov3a", "cov3b")*concept_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2concept_par1_t1 ~~ c("res1a", "res1b")*concept_par1_t1 # This allows residual variance on indicator X1 at T1 concept_par2_t1 ~~ c("res2a", "res2b")*concept_par2_t1 # This allows residual variance on indicator X2 at T1concept_par3_t1 ~~ c("res3a", "res3b")*concept_par3_t1 # This allows residual variance on indicator X3 at T1concept_par1_t2 ~~ c("res1a", "res1b")*concept_par1_t2 # This allows residual variance on indicator X1 at T2 concept_par2_t2 ~~ c("res2a", "res2b")*concept_par2_t2 # This allows residual variance on indicator X2 at T2 concept_par3_t2 ~~ c("res3a", "res3b")*concept_par3_t2 # This allows residual variance on indicator X3 at T2concept_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1concept_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1concept_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1concept_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2concept_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2concept_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_concept_group_weak <-sem(mi_lcs_concept_group_weak, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal ="loadings")# strong invariancemi_lcs_concept_group_strong <-'concept_t1 =~ 1*concept_par1_t1 + c("lamb2", "lamb2")*concept_par2_t1 + c("lamb3", "lamb3")*concept_par3_t1 # This specifies the measurement model for concept_t1 concept_t2 =~ 1*concept_par1_t2 + c("lamb2", "lamb2")*concept_par2_t2 + c("lamb3", "lamb3")*concept_par3_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadingsconcept_t2 ~ 1*concept_t1 # This parameter regresses concept_t2 perfectly on concept_t1d_concept_1 =~ 1*concept_t2 # This defines the latent change score factor as measured perfectly by scores on concept_t2concept_t2 ~ 0*1 # This line constrains the intercept of concept_t2 to 0concept_t2 ~~ 0*concept_t2 # This fixes the variance of concept_t2 to 0d_concept_1 ~ c("d_int", "d_int")*1 # This estimates the intercept of the change score concept_t1 ~ c("wb_int", "wb_int")*1 # This estimates the intercept of concept_t1 d_concept_1 ~~ c("d_var_a", "d_var_b")*d_concept_1 # This estimates the variance of the change scores concept_t1 ~~ c("wb_var_a", "wb_var_b")*concept_t1 # This estimates the variance of the concept_t1 d_concept_1 ~~ c("fb_a", "fb_b")*concept_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalconcept_par1_t1 ~~ c("cov1a", "cov1b")*concept_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2concept_par2_t1 ~~ c("cov2a", "cov2b")*concept_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2concept_par3_t1 ~~ c("cov3a", "cov3b")*concept_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2concept_par1_t1 ~~ c("res1a", "res1b")*concept_par1_t1 # This allows residual variance on indicator X1 at T1 concept_par2_t1 ~~ c("res2a", "res2b")*concept_par2_t1 # This allows residual variance on indicator X2 at T1concept_par3_t1 ~~ c("res3a", "res3b")*concept_par3_t1 # This allows residual variance on indicator X3 at T1concept_par1_t2 ~~ c("res1a", "res1b")*concept_par1_t2 # This allows residual variance on indicator X1 at T2 concept_par2_t2 ~~ c("res2a", "res2b")*concept_par2_t2 # This allows residual variance on indicator X2 at T2 concept_par3_t2 ~~ c("res3a", "res3b")*concept_par3_t2 # This allows residual variance on indicator X3 at T2concept_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1concept_par2_t1 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T1concept_par3_t1 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T1concept_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2concept_par2_t2 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T2concept_par3_t2 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T2'lcs_concept_group_strong <-sem(mi_lcs_concept_group_strong, data=df_sbsa2_wide_wb %>%filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal =c("intercepts", "loadings"))
Self-concept clarity: results
# model comparison tests for measurement invariancelavTestLRT(lcs_concept_group_config, lcs_concept_group_weak, lcs_concept_group_strong)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
lcs_concept_group_config 24 7424.3 7559.7 31.207
lcs_concept_group_weak 26 7420.6 7546.9 31.474 0.26259 2 0.8770
lcs_concept_group_strong 30 7413.2 7521.5 32.099 0.62600 4 0.9601
# show model with varying latent change parameters # -> key parameter is "d_concept_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_concept <- broom::tidy(lcs_concept_group_weak, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="concept"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_concept_1 ~1 "))kable(params_main_lcs_concept, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_concept_1 ~1
d_int_a
0.168
0.188
0.336
5.123
0
d_concept_1 ~1
d_int_b
0.185
0.208
0.374
5.700
0
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(lcs_concept_group_strong, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="concept"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_concept_1 ~1 ")), digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_concept_1 ~1
d_int
0.177
0.198
0.353
7.62
0
d_concept_1 ~1
d_int
0.177
0.198
0.358
7.62
0
Slightly more positive change in self-concept clarity in the self-improvement group but no substantial differences according to the LRTs.
# whole model (weak invariance)summary(lcs_concept_group_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
6.8.2 Latent well-being change: intervention vs. control
After seeing that the two intervention groups do not differ substantially, we want to test the control group vs. the two intervention groups (all from T1 to T2).
# add new group variabledf_sbsa2_wide_wb <- df_sbsa2_wide_wb %>%mutate(group_cg =ifelse(rando=="Waitlist-Control", "Control", "Intervention"))df_sbsa2_wide_wb %>%group_by(group_cg) %>%tally()
# A tibble: 2 × 2
group_cg n
<chr> <int>
1 Control 175
2 Intervention 674
6.8.2.1 Life satisfaction
Life satisfaction: fitting multi-group models
Show the code
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)# configural invariancemi_lcs_swls_group_cg_config <-'swls_t1 =~ 1*sw06_01_t1 + c("lamb2a", "lamb2b")*sw06_02_t1 + c("lamb3a", "lamb3b")*sw06_03_t1 + c("lamb4a", "lamb4b")*sw06_04_t1 # This specifies the measurement model for swls_t1 swls_t2 =~ 1*sw06_01_t2 + c("lamb2a", "lamb2b")*sw06_02_t2 + c("lamb3a", "lamb3b")*sw06_03_t2 + c("lamb4a", "lamb4b")*sw06_04_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadingsswls_t2 ~ 1*swls_t1 # This parameter regresses swls_t2 perfectly on swls_t1d_swls_1 =~ 1*swls_t2 # This defines the latent change score factor as measured perfectly by scores on swls_t2swls_t2 ~ 0*1 # This line constrains the intercept of swls_t2 to 0swls_t2 ~~ 0*swls_t2 # This fixes the variance of swls_t2 to 0d_swls_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score swls_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of swls_t1 d_swls_1 ~~ c("d_var_a", "d_var_b")*d_swls_1 # This estimates the variance of the change scores swls_t1 ~~ c("wb_var_a", "wb_var_b")*swls_t1 # This estimates the variance of the swls_t1 d_swls_1 ~~ c("fb_a", "fb_b")*swls_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalsw06_01_t1 ~~ c("cov1a", "cov1b")*sw06_01_t2 # This allows residual covariance on indicator X1 across T1 and T2sw06_02_t1 ~~ c("cov2a", "cov2b")*sw06_02_t2 # This allows residual covariance on indicator X2 across T1 and T2sw06_03_t1 ~~ c("cov3a", "cov3b")*sw06_03_t2 # This allows residual covariance on indicator X3 across T1 and T2sw06_04_t1 ~~ c("cov4a", "cov4b")*sw06_04_t2 # This allows residual covariance on indicator X4 across T1 and T2sw06_01_t1 ~~ c("res1a", "res1b")*sw06_01_t1 # This allows residual variance on indicator X1 at T1 sw06_02_t1 ~~ c("res2a", "res2b")*sw06_02_t1 # This allows residual variance on indicator X2 at T1sw06_03_t1 ~~ c("res3a", "res3b")*sw06_03_t1 # This allows residual variance on indicator X3 at T1sw06_04_t1 ~~ c("res4a", "res4b")*sw06_04_t1 # This allows residual variance on indicator X4 at T1sw06_01_t2 ~~ c("res1a", "res1b")*sw06_01_t2 # This allows residual variance on indicator X1 at T2 sw06_02_t2 ~~ c("res2a", "res2b")*sw06_02_t2 # This allows residual variance on indicator X2 at T2 sw06_03_t2 ~~ c("res3a", "res3b")*sw06_03_t2 # This allows residual variance on indicator X3 at T2sw06_04_t2 ~~ c("res4a", "res4b")*sw06_04_t2 # This allows residual variance on indicator X4 at T2sw06_01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1sw06_02_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1sw06_03_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1sw06_04_t1 ~ c("m4a", "m4b")*1 # This estimates the intercept of X4 at T1sw06_01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2sw06_02_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2sw06_03_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2sw06_04_t2 ~ c("m4a", "m4b")*1 # This estimates the intercept of X4 at T2'lcs_swls_group_cg_config <-sem(mi_lcs_swls_group_cg_config, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg")# weak invariancemi_lcs_swls_group_cg_weak <-'swls_t1 =~ 1*sw06_01_t1 + c("lamb2", "lamb2")*sw06_02_t1 + c("lamb3", "lamb3")*sw06_03_t1 + c("lamb4", "lamb4")*sw06_04_t1 # This specifies the measurement model for swls_t1 swls_t2 =~ 1*sw06_01_t2 + c("lamb2", "lamb2")*sw06_02_t2 + c("lamb3", "lamb3")*sw06_03_t2 + c("lamb4", "lamb4")*sw06_04_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadingsswls_t2 ~ 1*swls_t1 # This parameter regresses swls_t2 perfectly on swls_t1d_swls_1 =~ 1*swls_t2 # This defines the latent change score factor as measured perfectly by scores on swls_t2swls_t2 ~ 0*1 # This line constrains the intercept of swls_t2 to 0swls_t2 ~~ 0*swls_t2 # This fixes the variance of swls_t2 to 0d_swls_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score swls_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of swls_t1 d_swls_1 ~~ c("d_var_a", "d_var_b")*d_swls_1 # This estimates the variance of the change scores swls_t1 ~~ c("wb_var_a", "wb_var_b")*swls_t1 # This estimates the variance of the swls_t1 d_swls_1 ~~ c("fb_a", "fb_b")*swls_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalsw06_01_t1 ~~ c("cov1a", "cov1b")*sw06_01_t2 # This allows residual covariance on indicator X1 across T1 and T2sw06_02_t1 ~~ c("cov2a", "cov2b")*sw06_02_t2 # This allows residual covariance on indicator X2 across T1 and T2sw06_03_t1 ~~ c("cov3a", "cov3b")*sw06_03_t2 # This allows residual covariance on indicator X3 across T1 and T2sw06_04_t1 ~~ c("cov4a", "cov4b")*sw06_04_t2 # This allows residual covariance on indicator X4 across T1 and T2sw06_01_t1 ~~ c("res1a", "res1b")*sw06_01_t1 # This allows residual variance on indicator X1 at T1 sw06_02_t1 ~~ c("res2a", "res2b")*sw06_02_t1 # This allows residual variance on indicator X2 at T1sw06_03_t1 ~~ c("res3a", "res3b")*sw06_03_t1 # This allows residual variance on indicator X3 at T1sw06_04_t1 ~~ c("res4a", "res4b")*sw06_04_t1 # This allows residual variance on indicator X4 at T1sw06_01_t2 ~~ c("res1a", "res1b")*sw06_01_t2 # This allows residual variance on indicator X1 at T2 sw06_02_t2 ~~ c("res2a", "res2b")*sw06_02_t2 # This allows residual variance on indicator X2 at T2 sw06_03_t2 ~~ c("res3a", "res3b")*sw06_03_t2 # This allows residual variance on indicator X3 at T2sw06_04_t2 ~~ c("res4a", "res4b")*sw06_04_t2 # This allows residual variance on indicator X4 at T2sw06_01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1sw06_02_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1sw06_03_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1sw06_04_t1 ~ c("m4a", "m4b")*1 # This estimates the intercept of X4 at T1sw06_01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2sw06_02_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2sw06_03_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2sw06_04_t2 ~ c("m4a", "m4b")*1 # This estimates the intercept of X4 at T2'lcs_swls_group_cg_weak <-sem(mi_lcs_swls_group_cg_weak, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal ="loadings")# strong invariancemi_lcs_swls_group_cg_strong <-'swls_t1 =~ 1*sw06_01_t1 + c("lamb2", "lamb2")*sw06_02_t1 + c("lamb3", "lamb3")*sw06_03_t1 + c("lamb4", "lamb4")*sw06_04_t1 # This specifies the measurement model for swls_t1 swls_t2 =~ 1*sw06_01_t2 + c("lamb2", "lamb2")*sw06_02_t2 + c("lamb3", "lamb3")*sw06_03_t2 + c("lamb4", "lamb4")*sw06_04_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadingsswls_t2 ~ 1*swls_t1 # This parameter regresses swls_t2 perfectly on swls_t1d_swls_1 =~ 1*swls_t2 # This defines the latent change score factor as measured perfectly by scores on swls_t2swls_t2 ~ 0*1 # This line constrains the intercept of swls_t2 to 0swls_t2 ~~ 0*swls_t2 # This fixes the variance of swls_t2 to 0d_swls_1 ~ c("d_int", "d_int")*1 # This estimates the intercept of the change score swls_t1 ~ c("wb_int", "wb_int")*1 # This estimates the intercept of swls_t1 d_swls_1 ~~ c("d_var_a", "d_var_b")*d_swls_1 # This estimates the variance of the change scores swls_t1 ~~ c("wb_var_a", "wb_var_b")*swls_t1 # This estimates the variance of the swls_t1 d_swls_1 ~~ c("fb_a", "fb_b")*swls_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalsw06_01_t1 ~~ c("cov1a", "cov1b")*sw06_01_t2 # This allows residual covariance on indicator X1 across T1 and T2sw06_02_t1 ~~ c("cov2a", "cov2b")*sw06_02_t2 # This allows residual covariance on indicator X2 across T1 and T2sw06_03_t1 ~~ c("cov3a", "cov3b")*sw06_03_t2 # This allows residual covariance on indicator X3 across T1 and T2sw06_04_t1 ~~ c("cov4a", "cov4b")*sw06_04_t2 # This allows residual covariance on indicator X4 across T1 and T2sw06_01_t1 ~~ c("res1a", "res1b")*sw06_01_t1 # This allows residual variance on indicator X1 at T1 sw06_02_t1 ~~ c("res2a", "res2b")*sw06_02_t1 # This allows residual variance on indicator X2 at T1sw06_03_t1 ~~ c("res3a", "res3b")*sw06_03_t1 # This allows residual variance on indicator X3 at T1sw06_04_t1 ~~ c("res4a", "res4b")*sw06_04_t1 # This allows residual variance on indicator X4 at T1sw06_01_t2 ~~ c("res1a", "res1b")*sw06_01_t2 # This allows residual variance on indicator X1 at T2 sw06_02_t2 ~~ c("res2a", "res2b")*sw06_02_t2 # This allows residual variance on indicator X2 at T2 sw06_03_t2 ~~ c("res3a", "res3b")*sw06_03_t2 # This allows residual variance on indicator X3 at T2sw06_04_t2 ~~ c("res4a", "res4b")*sw06_04_t2 # This allows residual variance on indicator X4 at T2sw06_01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1sw06_02_t1 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T1sw06_03_t1 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T1sw06_04_t1 ~ c("m4", "m4")*1 # This estimates the intercept of X4 at T1sw06_01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2sw06_02_t2 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T2sw06_03_t2 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T2sw06_04_t2 ~ c("m4", "m4")*1 # This estimates the intercept of X4 at T2'lcs_swls_group_cg_strong <-sem(mi_lcs_swls_group_cg_strong, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal =c("intercepts", "loadings"))
Life satisfaction: results
# model comparison tests for measurement invariancelavTestLRT(lcs_swls_group_cg_config, lcs_swls_group_cg_weak, lcs_swls_group_cg_strong)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
lcs_swls_group_cg_config 50 16306 16486 143.14
lcs_swls_group_cg_weak 53 16303 16469 146.48 4.1252 3 0.24826
lcs_swls_group_cg_strong 58 16303 16445 156.11 9.3589 5 0.09558 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_swls_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Control group, b = Intervention groups)params_main_lcs_swls_cg <- broom::tidy(lcs_swls_group_cg_weak, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="swls"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_swls_1 ~1 "))kable(params_main_lcs_swls_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_swls_1 ~1
d_int_a
0.243
0.245
0.463
4.294
0
d_swls_1 ~1
d_int_b
0.273
0.275
0.413
8.312
0
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(lcs_swls_group_cg_strong, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="swls"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_swls_1 ~1 ")), digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_swls_1 ~1
d_int
0.265
0.267
0.504
9.246
0
d_swls_1 ~1
d_int
0.265
0.267
0.401
9.246
0
Slightly more positive change in life satisfaction in the intervention groups compared to the control group but no substantial differences according to the LRTs.
# whole model (weak invariance)summary(lcs_swls_group_cg_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)# configural invariancemi_lcs_meaning_group_cg_config <-'meaning_t1 =~ 1*meaning_par1_t1 + c("lamb2a", "lamb2b")*meaning_par2_t1 + c("lamb3a", "lamb3b")*meaning_par3_t1 # This specifies the measurement model for meaning_t1 meaning_t2 =~ 1*meaning_par1_t2 + c("lamb2a", "lamb2b")*meaning_par2_t2 + c("lamb3a", "lamb3b")*meaning_par3_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadingsmeaning_t2 ~ 1*meaning_t1 # This parameter regresses meaning_t2 perfectly on meaning_t1d_meaning_1 =~ 1*meaning_t2 # This defines the latent change score factor as measured perfectly by scores on meaning_t2meaning_t2 ~ 0*1 # This line constrains the intercept of meaning_t2 to 0meaning_t2 ~~ 0*meaning_t2 # This fixes the variance of meaning_t2 to 0d_meaning_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score meaning_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of meaning_t1 d_meaning_1 ~~ c("d_var_a", "d_var_b")*d_meaning_1 # This estimates the variance of the change scores meaning_t1 ~~ c("wb_var_a", "wb_var_b")*meaning_t1 # This estimates the variance of the meaning_t1 d_meaning_1 ~~ c("fb_a", "fb_b")*meaning_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalmeaning_par1_t1 ~~ c("cov1a", "cov1b")*meaning_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2meaning_par2_t1 ~~ c("cov2a", "cov2b")*meaning_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2meaning_par3_t1 ~~ c("cov3a", "cov3b")*meaning_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2meaning_par1_t1 ~~ c("res1a", "res1b")*meaning_par1_t1 # This allows residual variance on indicator X1 at T1 meaning_par2_t1 ~~ c("res2a", "res2b")*meaning_par2_t1 # This allows residual variance on indicator X2 at T1meaning_par3_t1 ~~ c("res3a", "res3b")*meaning_par3_t1 # This allows residual variance on indicator X3 at T1meaning_par1_t2 ~~ c("res1a", "res1b")*meaning_par1_t2 # This allows residual variance on indicator X1 at T2 meaning_par2_t2 ~~ c("res2a", "res2b")*meaning_par2_t2 # This allows residual variance on indicator X2 at T2 meaning_par3_t2 ~~ c("res3a", "res3b")*meaning_par3_t2 # This allows residual variance on indicator X3 at T2meaning_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1meaning_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1meaning_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1meaning_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2meaning_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2meaning_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_meaning_group_cg_config <-sem(mi_lcs_meaning_group_cg_config, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg")# weak invariancemi_lcs_meaning_group_cg_weak <-'meaning_t1 =~ 1*meaning_par1_t1 + c("lamb2", "lamb2")*meaning_par2_t1 + c("lamb3", "lamb3")*meaning_par3_t1 # This specifies the measurement model for meaning_t1 meaning_t2 =~ 1*meaning_par1_t2 + c("lamb2", "lamb2")*meaning_par2_t2 + c("lamb3", "lamb3")*meaning_par3_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadingsmeaning_t2 ~ 1*meaning_t1 # This parameter regresses meaning_t2 perfectly on meaning_t1d_meaning_1 =~ 1*meaning_t2 # This defines the latent change score factor as measured perfectly by scores on meaning_t2meaning_t2 ~ 0*1 # This line constrains the intercept of meaning_t2 to 0meaning_t2 ~~ 0*meaning_t2 # This fixes the variance of meaning_t2 to 0d_meaning_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score meaning_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of meaning_t1 d_meaning_1 ~~ c("d_var_a", "d_var_b")*d_meaning_1 # This estimates the variance of the change scores meaning_t1 ~~ c("wb_var_a", "wb_var_b")*meaning_t1 # This estimates the variance of the meaning_t1 d_meaning_1 ~~ c("fb_a", "fb_b")*meaning_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalmeaning_par1_t1 ~~ c("cov1a", "cov1b")*meaning_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2meaning_par2_t1 ~~ c("cov2a", "cov2b")*meaning_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2meaning_par3_t1 ~~ c("cov3a", "cov3b")*meaning_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2meaning_par1_t1 ~~ c("res1a", "res1b")*meaning_par1_t1 # This allows residual variance on indicator X1 at T1 meaning_par2_t1 ~~ c("res2a", "res2b")*meaning_par2_t1 # This allows residual variance on indicator X2 at T1meaning_par3_t1 ~~ c("res3a", "res3b")*meaning_par3_t1 # This allows residual variance on indicator X3 at T1meaning_par1_t2 ~~ c("res1a", "res1b")*meaning_par1_t2 # This allows residual variance on indicator X1 at T2 meaning_par2_t2 ~~ c("res2a", "res2b")*meaning_par2_t2 # This allows residual variance on indicator X2 at T2 meaning_par3_t2 ~~ c("res3a", "res3b")*meaning_par3_t2 # This allows residual variance on indicator X3 at T2meaning_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1meaning_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1meaning_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1meaning_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2meaning_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2meaning_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_meaning_group_cg_weak <-sem(mi_lcs_meaning_group_cg_weak, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal ="loadings")# strong invariancemi_lcs_meaning_group_cg_strong <-'meaning_t1 =~ 1*meaning_par1_t1 + c("lamb2", "lamb2")*meaning_par2_t1 + c("lamb3", "lamb3")*meaning_par3_t1 # This specifies the measurement model for meaning_t1 meaning_t2 =~ 1*meaning_par1_t2 + c("lamb2", "lamb2")*meaning_par2_t2 + c("lamb3", "lamb3")*meaning_par3_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadingsmeaning_t2 ~ 1*meaning_t1 # This parameter regresses meaning_t2 perfectly on meaning_t1d_meaning_1 =~ 1*meaning_t2 # This defines the latent change score factor as measured perfectly by scores on meaning_t2meaning_t2 ~ 0*1 # This line constrains the intercept of meaning_t2 to 0meaning_t2 ~~ 0*meaning_t2 # This fixes the variance of meaning_t2 to 0d_meaning_1 ~ c("d_int", "d_int")*1 # This estimates the intercept of the change score meaning_t1 ~ c("wb_int", "wb_int")*1 # This estimates the intercept of meaning_t1 d_meaning_1 ~~ c("d_var_a", "d_var_b")*d_meaning_1 # This estimates the variance of the change scores meaning_t1 ~~ c("wb_var_a", "wb_var_b")*meaning_t1 # This estimates the variance of the meaning_t1 d_meaning_1 ~~ c("fb_a", "fb_b")*meaning_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalmeaning_par1_t1 ~~ c("cov1a", "cov1b")*meaning_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2meaning_par2_t1 ~~ c("cov2a", "cov2b")*meaning_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2meaning_par3_t1 ~~ c("cov3a", "cov3b")*meaning_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2meaning_par1_t1 ~~ c("res1a", "res1b")*meaning_par1_t1 # This allows residual variance on indicator X1 at T1 meaning_par2_t1 ~~ c("res2a", "res2b")*meaning_par2_t1 # This allows residual variance on indicator X2 at T1meaning_par3_t1 ~~ c("res3a", "res3b")*meaning_par3_t1 # This allows residual variance on indicator X3 at T1meaning_par1_t2 ~~ c("res1a", "res1b")*meaning_par1_t2 # This allows residual variance on indicator X1 at T2 meaning_par2_t2 ~~ c("res2a", "res2b")*meaning_par2_t2 # This allows residual variance on indicator X2 at T2 meaning_par3_t2 ~~ c("res3a", "res3b")*meaning_par3_t2 # This allows residual variance on indicator X3 at T2meaning_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1meaning_par2_t1 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T1meaning_par3_t1 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T1meaning_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2meaning_par2_t2 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T2meaning_par3_t2 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T2'lcs_meaning_group_cg_strong <-sem(mi_lcs_meaning_group_cg_strong, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal =c("intercepts", "loadings"))
Meaning in life: results
# model comparison tests for measurement invariancelavTestLRT(lcs_meaning_group_cg_config, lcs_meaning_group_cg_weak, lcs_meaning_group_cg_strong)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
lcs_meaning_group_cg_config 24 12026 12169 46.959
lcs_meaning_group_cg_weak 26 12024 12157 48.250 1.2423 2 0.5373
lcs_meaning_group_cg_strong 30 12017 12131 49.573 1.3251 4 0.8571
# show model with varying latent change parameters # -> key parameter is "d_meaning_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Control group, b = Intervention groups)params_main_lcs_meaning_cg <- broom::tidy(lcs_meaning_group_cg_weak, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="meaning"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_meaning_1 ~1 "))kable(params_main_lcs_meaning_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_meaning_1 ~1
d_int_a
0.288
0.248
0.415
4.496
0
d_meaning_1 ~1
d_int_b
0.213
0.183
0.316
6.659
0
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(lcs_meaning_group_cg_strong, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="meaning"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_meaning_1 ~1 ")), digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_meaning_1 ~1
d_int
0.227
0.195
0.326
7.866
0
d_meaning_1 ~1
d_int
0.227
0.195
0.338
7.866
0
Somewhat more positive change in meaning in life in the control group compared to the intervention groups but no substantial differences according to the LRTs.
# whole model (weak invariance)summary(lcs_meaning_group_cg_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)# configural invariancemi_lcs_selfes_group_cg_config <-'selfes_t1 =~ 1*selfes_par1_t1 + c("lamb2a", "lamb2b")*selfes_par2_t1 + c("lamb3a", "lamb3b")*selfes_par3_t1 # This specifies the measurement model for selfes_t1 selfes_t2 =~ 1*selfes_par1_t2 + c("lamb2a", "lamb2b")*selfes_par2_t2 + c("lamb3a", "lamb3b")*selfes_par3_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadingsselfes_t2 ~ 1*selfes_t1 # This parameter regresses selfes_t2 perfectly on selfes_t1d_selfes_1 =~ 1*selfes_t2 # This defines the latent change score factor as measured perfectly by scores on selfes_t2selfes_t2 ~ 0*1 # This line constrains the intercept of selfes_t2 to 0selfes_t2 ~~ 0*selfes_t2 # This fixes the variance of selfes_t2 to 0d_selfes_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score selfes_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of selfes_t1 d_selfes_1 ~~ c("d_var_a", "d_var_b")*d_selfes_1 # This estimates the variance of the change scores selfes_t1 ~~ c("wb_var_a", "wb_var_b")*selfes_t1 # This estimates the variance of the selfes_t1 d_selfes_1 ~~ c("fb_a", "fb_b")*selfes_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalselfes_par1_t1 ~~ c("cov1a", "cov1b")*selfes_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2selfes_par2_t1 ~~ c("cov2a", "cov2b")*selfes_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2selfes_par3_t1 ~~ c("cov3a", "cov3b")*selfes_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2selfes_par1_t1 ~~ c("res1a", "res1b")*selfes_par1_t1 # This allows residual variance on indicator X1 at T1 selfes_par2_t1 ~~ c("res2a", "res2b")*selfes_par2_t1 # This allows residual variance on indicator X2 at T1selfes_par3_t1 ~~ c("res3a", "res3b")*selfes_par3_t1 # This allows residual variance on indicator X3 at T1selfes_par1_t2 ~~ c("res1a", "res1b")*selfes_par1_t2 # This allows residual variance on indicator X1 at T2 selfes_par2_t2 ~~ c("res2a", "res2b")*selfes_par2_t2 # This allows residual variance on indicator X2 at T2 selfes_par3_t2 ~~ c("res3a", "res3b")*selfes_par3_t2 # This allows residual variance on indicator X3 at T2selfes_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1selfes_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1selfes_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1selfes_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2selfes_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2selfes_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_selfes_group_cg_config <-sem(mi_lcs_selfes_group_cg_config, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg")# weak invariancemi_lcs_selfes_group_cg_weak <-'selfes_t1 =~ 1*selfes_par1_t1 + c("lamb2", "lamb2")*selfes_par2_t1 + c("lamb3", "lamb3")*selfes_par3_t1 # This specifies the measurement model for selfes_t1 selfes_t2 =~ 1*selfes_par1_t2 + c("lamb2", "lamb2")*selfes_par2_t2 + c("lamb3", "lamb3")*selfes_par3_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadingsselfes_t2 ~ 1*selfes_t1 # This parameter regresses selfes_t2 perfectly on selfes_t1d_selfes_1 =~ 1*selfes_t2 # This defines the latent change score factor as measured perfectly by scores on selfes_t2selfes_t2 ~ 0*1 # This line constrains the intercept of selfes_t2 to 0selfes_t2 ~~ 0*selfes_t2 # This fixes the variance of selfes_t2 to 0d_selfes_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score selfes_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of selfes_t1 d_selfes_1 ~~ c("d_var_a", "d_var_b")*d_selfes_1 # This estimates the variance of the change scores selfes_t1 ~~ c("wb_var_a", "wb_var_b")*selfes_t1 # This estimates the variance of the selfes_t1 d_selfes_1 ~~ c("fb_a", "fb_b")*selfes_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalselfes_par1_t1 ~~ c("cov1a", "cov1b")*selfes_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2selfes_par2_t1 ~~ c("cov2a", "cov2b")*selfes_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2selfes_par3_t1 ~~ c("cov3a", "cov3b")*selfes_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2selfes_par1_t1 ~~ c("res1a", "res1b")*selfes_par1_t1 # This allows residual variance on indicator X1 at T1 selfes_par2_t1 ~~ c("res2a", "res2b")*selfes_par2_t1 # This allows residual variance on indicator X2 at T1selfes_par3_t1 ~~ c("res3a", "res3b")*selfes_par3_t1 # This allows residual variance on indicator X3 at T1selfes_par1_t2 ~~ c("res1a", "res1b")*selfes_par1_t2 # This allows residual variance on indicator X1 at T2 selfes_par2_t2 ~~ c("res2a", "res2b")*selfes_par2_t2 # This allows residual variance on indicator X2 at T2 selfes_par3_t2 ~~ c("res3a", "res3b")*selfes_par3_t2 # This allows residual variance on indicator X3 at T2selfes_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1selfes_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1selfes_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1selfes_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2selfes_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2selfes_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_selfes_group_cg_weak <-sem(mi_lcs_selfes_group_cg_weak, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal ="loadings")# strong invariancemi_lcs_selfes_group_cg_strong <-'selfes_t1 =~ 1*selfes_par1_t1 + c("lamb2", "lamb2")*selfes_par2_t1 + c("lamb3", "lamb3")*selfes_par3_t1 # This specifies the measurement model for selfes_t1 selfes_t2 =~ 1*selfes_par1_t2 + c("lamb2", "lamb2")*selfes_par2_t2 + c("lamb3", "lamb3")*selfes_par3_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadingsselfes_t2 ~ 1*selfes_t1 # This parameter regresses selfes_t2 perfectly on selfes_t1d_selfes_1 =~ 1*selfes_t2 # This defines the latent change score factor as measured perfectly by scores on selfes_t2selfes_t2 ~ 0*1 # This line constrains the intercept of selfes_t2 to 0selfes_t2 ~~ 0*selfes_t2 # This fixes the variance of selfes_t2 to 0d_selfes_1 ~ c("d_int", "d_int")*1 # This estimates the intercept of the change score selfes_t1 ~ c("wb_int", "wb_int")*1 # This estimates the intercept of selfes_t1 d_selfes_1 ~~ c("d_var_a", "d_var_b")*d_selfes_1 # This estimates the variance of the change scores selfes_t1 ~~ c("wb_var_a", "wb_var_b")*selfes_t1 # This estimates the variance of the selfes_t1 d_selfes_1 ~~ c("fb_a", "fb_b")*selfes_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalselfes_par1_t1 ~~ c("cov1a", "cov1b")*selfes_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2selfes_par2_t1 ~~ c("cov2a", "cov2b")*selfes_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2selfes_par3_t1 ~~ c("cov3a", "cov3b")*selfes_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2selfes_par1_t1 ~~ c("res1a", "res1b")*selfes_par1_t1 # This allows residual variance on indicator X1 at T1 selfes_par2_t1 ~~ c("res2a", "res2b")*selfes_par2_t1 # This allows residual variance on indicator X2 at T1selfes_par3_t1 ~~ c("res3a", "res3b")*selfes_par3_t1 # This allows residual variance on indicator X3 at T1selfes_par1_t2 ~~ c("res1a", "res1b")*selfes_par1_t2 # This allows residual variance on indicator X1 at T2 selfes_par2_t2 ~~ c("res2a", "res2b")*selfes_par2_t2 # This allows residual variance on indicator X2 at T2 selfes_par3_t2 ~~ c("res3a", "res3b")*selfes_par3_t2 # This allows residual variance on indicator X3 at T2selfes_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1selfes_par2_t1 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T1selfes_par3_t1 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T1selfes_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2selfes_par2_t2 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T2selfes_par3_t2 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T2'lcs_selfes_group_cg_strong <-sem(mi_lcs_selfes_group_cg_strong, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal =c("intercepts", "loadings"))
Self-esteem: results
# model comparison tests for measurement invariancelavTestLRT(lcs_selfes_group_cg_config, lcs_selfes_group_cg_weak, lcs_selfes_group_cg_strong)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
lcs_selfes_group_cg_config 24 8931.3 9073.6 19.210
lcs_selfes_group_cg_weak 26 8927.3 9060.1 19.239 0.0250 2
lcs_selfes_group_cg_strong 30 8924.0 9037.8 23.881 4.7871 4
Pr(>Chisq)
lcs_selfes_group_cg_config
lcs_selfes_group_cg_weak 0.9876
lcs_selfes_group_cg_strong 0.3099
# show model with varying latent change parameters # -> key parameter is "d_selfes_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Control group, b = Intervention groups)params_main_lcs_selfes_cg <- broom::tidy(lcs_selfes_group_cg_weak, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="selfes"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_selfes_1 ~1 "))kable(params_main_lcs_selfes_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_selfes_1 ~1
d_int_a
0.187
0.212
0.587
5.602
0
d_selfes_1 ~1
d_int_b
0.264
0.300
0.546
11.524
0
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(lcs_selfes_group_cg_strong, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="selfes"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_selfes_1 ~1 ")), digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_selfes_1 ~1
d_int
0.24
0.272
0.743
12.613
0
d_selfes_1 ~1
d_int
0.24
0.272
0.496
12.613
0
Somewhat more positive change in self-esteem in the intervention groups compared to the control group but no substantial differences according to the LRTs.
# whole model (weak invariance)summary(lcs_selfes_group_cg_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)# configural invariancemi_lcs_concept_group_cg_config <-'concept_t1 =~ 1*concept_par1_t1 + c("lamb2a", "lamb2b")*concept_par2_t1 + c("lamb3a", "lamb3b")*concept_par3_t1 # This specifies the measurement model for concept_t1 concept_t2 =~ 1*concept_par1_t2 + c("lamb2a", "lamb2b")*concept_par2_t2 + c("lamb3a", "lamb3b")*concept_par3_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadingsconcept_t2 ~ 1*concept_t1 # This parameter regresses concept_t2 perfectly on concept_t1d_concept_1 =~ 1*concept_t2 # This defines the latent change score factor as measured perfectly by scores on concept_t2concept_t2 ~ 0*1 # This line constrains the intercept of concept_t2 to 0concept_t2 ~~ 0*concept_t2 # This fixes the variance of concept_t2 to 0d_concept_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score concept_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of concept_t1 d_concept_1 ~~ c("d_var_a", "d_var_b")*d_concept_1 # This estimates the variance of the change scores concept_t1 ~~ c("wb_var_a", "wb_var_b")*concept_t1 # This estimates the variance of the concept_t1 d_concept_1 ~~ c("fb_a", "fb_b")*concept_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalconcept_par1_t1 ~~ c("cov1a", "cov1b")*concept_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2concept_par2_t1 ~~ c("cov2a", "cov2b")*concept_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2concept_par3_t1 ~~ c("cov3a", "cov3b")*concept_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2concept_par1_t1 ~~ c("res1a", "res1b")*concept_par1_t1 # This allows residual variance on indicator X1 at T1 concept_par2_t1 ~~ c("res2a", "res2b")*concept_par2_t1 # This allows residual variance on indicator X2 at T1concept_par3_t1 ~~ c("res3a", "res3b")*concept_par3_t1 # This allows residual variance on indicator X3 at T1concept_par1_t2 ~~ c("res1a", "res1b")*concept_par1_t2 # This allows residual variance on indicator X1 at T2 concept_par2_t2 ~~ c("res2a", "res2b")*concept_par2_t2 # This allows residual variance on indicator X2 at T2 concept_par3_t2 ~~ c("res3a", "res3b")*concept_par3_t2 # This allows residual variance on indicator X3 at T2concept_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1concept_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1concept_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1concept_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2concept_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2concept_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_concept_group_cg_config <-sem(mi_lcs_concept_group_cg_config, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg")# weak invariancemi_lcs_concept_group_cg_weak <-'concept_t1 =~ 1*concept_par1_t1 + c("lamb2", "lamb2")*concept_par2_t1 + c("lamb3", "lamb3")*concept_par3_t1 # This specifies the measurement model for concept_t1 concept_t2 =~ 1*concept_par1_t2 + c("lamb2", "lamb2")*concept_par2_t2 + c("lamb3", "lamb3")*concept_par3_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadingsconcept_t2 ~ 1*concept_t1 # This parameter regresses concept_t2 perfectly on concept_t1d_concept_1 =~ 1*concept_t2 # This defines the latent change score factor as measured perfectly by scores on concept_t2concept_t2 ~ 0*1 # This line constrains the intercept of concept_t2 to 0concept_t2 ~~ 0*concept_t2 # This fixes the variance of concept_t2 to 0d_concept_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score concept_t1 ~ c("wb_int_a", "wb_int_b")*1 # This estimates the intercept of concept_t1 d_concept_1 ~~ c("d_var_a", "d_var_b")*d_concept_1 # This estimates the variance of the change scores concept_t1 ~~ c("wb_var_a", "wb_var_b")*concept_t1 # This estimates the variance of the concept_t1 d_concept_1 ~~ c("fb_a", "fb_b")*concept_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalconcept_par1_t1 ~~ c("cov1a", "cov1b")*concept_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2concept_par2_t1 ~~ c("cov2a", "cov2b")*concept_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2concept_par3_t1 ~~ c("cov3a", "cov3b")*concept_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2concept_par1_t1 ~~ c("res1a", "res1b")*concept_par1_t1 # This allows residual variance on indicator X1 at T1 concept_par2_t1 ~~ c("res2a", "res2b")*concept_par2_t1 # This allows residual variance on indicator X2 at T1concept_par3_t1 ~~ c("res3a", "res3b")*concept_par3_t1 # This allows residual variance on indicator X3 at T1concept_par1_t2 ~~ c("res1a", "res1b")*concept_par1_t2 # This allows residual variance on indicator X1 at T2 concept_par2_t2 ~~ c("res2a", "res2b")*concept_par2_t2 # This allows residual variance on indicator X2 at T2 concept_par3_t2 ~~ c("res3a", "res3b")*concept_par3_t2 # This allows residual variance on indicator X3 at T2concept_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1concept_par2_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1concept_par3_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1concept_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2concept_par2_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2concept_par3_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'lcs_concept_group_cg_weak <-sem(mi_lcs_concept_group_cg_weak, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal ="loadings")# strong invariancemi_lcs_concept_group_cg_strong <-'concept_t1 =~ 1*concept_par1_t1 + c("lamb2", "lamb2")*concept_par2_t1 + c("lamb3", "lamb3")*concept_par3_t1 # This specifies the measurement model for concept_t1 concept_t2 =~ 1*concept_par1_t2 + c("lamb2", "lamb2")*concept_par2_t2 + c("lamb3", "lamb3")*concept_par3_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadingsconcept_t2 ~ 1*concept_t1 # This parameter regresses concept_t2 perfectly on concept_t1d_concept_1 =~ 1*concept_t2 # This defines the latent change score factor as measured perfectly by scores on concept_t2concept_t2 ~ 0*1 # This line constrains the intercept of concept_t2 to 0concept_t2 ~~ 0*concept_t2 # This fixes the variance of concept_t2 to 0d_concept_1 ~ c("d_int", "d_int")*1 # This estimates the intercept of the change score concept_t1 ~ c("wb_int", "wb_int")*1 # This estimates the intercept of concept_t1 d_concept_1 ~~ c("d_var_a", "d_var_b")*d_concept_1 # This estimates the variance of the change scores concept_t1 ~~ c("wb_var_a", "wb_var_b")*concept_t1 # This estimates the variance of the concept_t1 d_concept_1 ~~ c("fb_a", "fb_b")*concept_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditionalconcept_par1_t1 ~~ c("cov1a", "cov1b")*concept_par1_t2 # This allows residual covariance on indicator X1 across T1 and T2concept_par2_t1 ~~ c("cov2a", "cov2b")*concept_par2_t2 # This allows residual covariance on indicator X2 across T1 and T2concept_par3_t1 ~~ c("cov3a", "cov3b")*concept_par3_t2 # This allows residual covariance on indicator X3 across T1 and T2concept_par1_t1 ~~ c("res1a", "res1b")*concept_par1_t1 # This allows residual variance on indicator X1 at T1 concept_par2_t1 ~~ c("res2a", "res2b")*concept_par2_t1 # This allows residual variance on indicator X2 at T1concept_par3_t1 ~~ c("res3a", "res3b")*concept_par3_t1 # This allows residual variance on indicator X3 at T1concept_par1_t2 ~~ c("res1a", "res1b")*concept_par1_t2 # This allows residual variance on indicator X1 at T2 concept_par2_t2 ~~ c("res2a", "res2b")*concept_par2_t2 # This allows residual variance on indicator X2 at T2 concept_par3_t2 ~~ c("res3a", "res3b")*concept_par3_t2 # This allows residual variance on indicator X3 at T2concept_par1_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1concept_par2_t1 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T1concept_par3_t1 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T1concept_par1_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2concept_par2_t2 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T2concept_par3_t2 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T2'lcs_concept_group_cg_strong <-sem(mi_lcs_concept_group_cg_strong, data=df_sbsa2_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal =c("intercepts", "loadings"))
Self-concept clarity: results
# model comparison tests for measurement invariancelavTestLRT(lcs_concept_group_cg_config, lcs_concept_group_cg_weak, lcs_concept_group_cg_strong)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
lcs_concept_group_cg_config 24 9207.1 9349.4 43.255
lcs_concept_group_cg_weak 26 9203.5 9336.3 43.649 0.3759 2
lcs_concept_group_cg_strong 30 9202.1 9315.9 50.202 6.6192 4
Pr(>Chisq)
lcs_concept_group_cg_config
lcs_concept_group_cg_weak 0.8287
lcs_concept_group_cg_strong 0.1574
# show model with varying latent change parameters # -> key parameter is "d_concept_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Control group, b = Intervention groups)params_main_lcs_concept_cg <- broom::tidy(lcs_concept_group_cg_weak, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="concept"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_concept_1 ~1 "))kable(params_main_lcs_concept_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_concept_1 ~1
d_int_a
0.057
0.064
0.119
1.321
0.186
d_concept_1 ~1
d_int_b
0.178
0.199
0.355
7.628
0.000
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(lcs_concept_group_cg_strong, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_wb_st2 %>%filter(trait=="concept"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_concept_1 ~1 ")), digits =3)
term
label
estimate
beta
std.all
statistic
p.value
d_concept_1 ~1
d_int
0.152
0.17
0.309
7.24
0
d_concept_1 ~1
d_int
0.152
0.17
0.303
7.24
0
Somewhat more positive change in self-concept clarity in the intervention groups compared to the control group but no substantial differences according to the LRTs.
# whole model (weak invariance)summary(lcs_concept_group_cg_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
6.8.3 Profile correlations / squared diffs: acceptance vs. improvement (MLMs)
Profile correlations by group and measurement occasion (multilevel regression models) - results:
df_sbsa2_t1t2 <- df_sbsa2 %>%filter(rando!="Waitlist-Control"& time %in%c(1,2)) %>%mutate(time_d = time -1)psych::describeBy(df_sbsa2_t1t2$profile_corr_item_z, list(df_sbsa2_t1t2$rando, df_sbsa2_t1t2$time_d))
Descriptive statistics by group
: Self-Acceptance
: 0
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 335 0.42 0.49 0.37 0.38 0.43 -1.09 3.39 4.48 1.14 4.25 0.03
------------------------------------------------------------
: Self-Improvement
: 0
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 336 0.42 0.49 0.39 0.4 0.51 -0.89 2.33 3.22 0.47 0.36 0.03
------------------------------------------------------------
: Self-Acceptance
: 1
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 284 0.55 0.5 0.52 0.53 0.48 -1.07 2.17 3.23 0.36 0.5 0.03
------------------------------------------------------------
: Self-Improvement
: 1
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 291 0.56 0.48 0.54 0.55 0.56 -0.62 1.83 2.45 0.19 -0.53 0.03
Descriptive statistics by group
: Self-Acceptance
: 0
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 335 0.35 0.65 0.27 0.31 0.6 -1.07 3.77 4.84 0.93 2.14 0.04
------------------------------------------------------------
: Self-Improvement
: 0
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 337 0.34 0.67 0.29 0.31 0.7 -1.23 2.53 3.75 0.46 0.04 0.04
------------------------------------------------------------
: Self-Acceptance
: 1
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 284 0.51 0.67 0.46 0.48 0.66 -1.34 3.09 4.43 0.42 0.32 0.04
------------------------------------------------------------
: Self-Improvement
: 1
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 292 0.53 0.66 0.49 0.5 0.69 -1.08 2.51 3.6 0.32 -0.32 0.04
With both conceptualizations of the similarity / difference of current- and ideal-level personality (profile correlations / squared differences), we find no significant effects of group (at T1) or of interaction effects of group by measurement occasion (at T2).
6.8.4 Latent personality change: acceptance vs. improvement
6.8.4.1 Run models
Adapt latent change score model from above (but without any moderation) and add grouping factor in estimation (adding vectorized equality constraints to the model step by step):
Show the code
# create templates:# configural invariancetrait_template_main_config <-'trait_t1 =~ 1*ind01_t1 + c("lamb2a", "lamb2b")*ind02_t1 + c("lamb3a", "lamb3b")*ind03_t1 # This specifies the measurement model for trait_t1 trait_t2 =~ 1*ind01_t2 + c("lamb2a", "lamb2b")*ind02_t2 + c("lamb3a", "lamb3b")*ind03_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadingstrait_t2 ~ 1*trait_t1 # This parameter regresses trait_t2 perfectly on trait_t1d_trait_1 =~ 1*trait_t2 # This defines the latent change score factor as measured perfectly by scores on trait_t2trait_t2 ~ 0*1 # This line constrains the intercept of trait_t2 to 0trait_t2 ~~ 0*trait_t2 # This fixes the variance of trait_t2 to 0d_trait_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score trait_t1 ~ c("b5_int_a", "b5_int_b")*1 # This estimates the intercept of trait_t1 d_trait_1 ~~ c("d_var_a", "d_var_b")*d_trait_1 # This estimates the variance of the change scores trait_t1 ~~ c("b5_var_a", "b5_var_b")*trait_t1 # This estimates the variance of trait_t1 d_trait_1 ~~ c("fb_a", "fb_b")* trait_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditional and the moderation effect on the change scoreind01_t1 ~~ c("cov1a", "cov1b")*ind01_t2 # This allows residual covariance on indicator X1 across T1 and T2ind02_t1 ~~ c("cov2a", "cov2b")*ind02_t2 # This allows residual covariance on indicator X2 across T1 and T2ind03_t1 ~~ c("cov3a", "cov3b")*ind03_t2 # This allows residual covariance on indicator X3 across T1 and T2ind01_t1 ~~ c("res1a", "res1b")*ind01_t1 # This allows residual variance on indicator X1 at T1 ind02_t1 ~~ c("res2a", "res2b")*ind02_t1 # This allows residual variance on indicator X2 at T1ind03_t1 ~~ c("res3a", "res3b")*ind03_t1 # This allows residual variance on indicator X3 at T1ind01_t2 ~~ c("res1a", "res1b")*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ c("res2a", "res2b")*ind02_t2 # This allows residual variance on indicator X2 at T2 ind03_t2 ~~ c("res3a", "res3b")*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind02_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1ind03_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2ind03_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'# weak invariancetrait_template_main_weak <-'trait_t1 =~ 1*ind01_t1 + c("lamb2", "lamb2")*ind02_t1 + c("lamb3", "lamb3")*ind03_t1 # This specifies the measurement model for trait_t1 trait_t2 =~ 1*ind01_t2 + c("lamb2", "lamb2")*ind02_t2 + c("lamb3", "lamb3")*ind03_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadingstrait_t2 ~ 1*trait_t1 # This parameter regresses trait_t2 perfectly on trait_t1d_trait_1 =~ 1*trait_t2 # This defines the latent change score factor as measured perfectly by scores on trait_t2trait_t2 ~ 0*1 # This line constrains the intercept of trait_t2 to 0trait_t2 ~~ 0*trait_t2 # This fixes the variance of trait_t2 to 0d_trait_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score trait_t1 ~ c("b5_int_a", "b5_int_b")*1 # This estimates the intercept of trait_t1 d_trait_1 ~~ c("d_var_a", "d_var_b")*d_trait_1 # This estimates the variance of the change scores trait_t1 ~~ c("b5_var_a", "b5_var_b")*trait_t1 # This estimates the variance of trait_t1 d_trait_1 ~~ c("fb_a", "fb_b")* trait_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditional and the moderation effect on the change scoreind01_t1 ~~ c("cov1a", "cov1b")*ind01_t2 # This allows residual covariance on indicator X1 across T1 and T2ind02_t1 ~~ c("cov2a", "cov2b")*ind02_t2 # This allows residual covariance on indicator X2 across T1 and T2ind03_t1 ~~ c("cov3a", "cov3b")*ind03_t2 # This allows residual covariance on indicator X3 across T1 and T2ind01_t1 ~~ c("res1a", "res1b")*ind01_t1 # This allows residual variance on indicator X1 at T1 ind02_t1 ~~ c("res2a", "res2b")*ind02_t1 # This allows residual variance on indicator X2 at T1ind03_t1 ~~ c("res3a", "res3b")*ind03_t1 # This allows residual variance on indicator X3 at T1ind01_t2 ~~ c("res1a", "res1b")*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ c("res2a", "res2b")*ind02_t2 # This allows residual variance on indicator X2 at T2 ind03_t2 ~~ c("res3a", "res3b")*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind02_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1ind03_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2ind03_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'# strong invariancetrait_template_main_strong <-'trait_t1 =~ 1*ind01_t1 + c("lamb2", "lamb2")*ind02_t1 + c("lamb3", "lamb3")*ind03_t1 # This specifies the measurement model for trait_t1 trait_t2 =~ 1*ind01_t2 + c("lamb2", "lamb2")*ind02_t2 + c("lamb3", "lamb3")*ind03_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadingstrait_t2 ~ 1*trait_t1 # This parameter regresses trait_t2 perfectly on trait_t1d_trait_1 =~ 1*trait_t2 # This defines the latent change score factor as measured perfectly by scores on trait_t2trait_t2 ~ 0*1 # This line constrains the intercept of trait_t2 to 0trait_t2 ~~ 0*trait_t2 # This fixes the variance of trait_t2 to 0d_trait_1 ~ c("d_int", "d_int")*1 # This estimates the intercept of the change score trait_t1 ~ c("b5_int", "b5_int")*1 # This estimates the intercept of trait_t1 d_trait_1 ~~ c("d_var_a", "d_var_b")*d_trait_1 # This estimates the variance of the change scores trait_t1 ~~ c("b5_var_a", "b5_var_b")*trait_t1 # This estimates the variance of trait_t1 d_trait_1 ~~ c("fb_a", "fb_b")* trait_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change score remains unconditional and the moderation effect on the change scoreind01_t1 ~~ c("cov1a", "cov1b")*ind01_t2 # This allows residual covariance on indicator X1 across T1 and T2ind02_t1 ~~ c("cov2a", "cov2b")*ind02_t2 # This allows residual covariance on indicator X2 across T1 and T2ind03_t1 ~~ c("cov3a", "cov3b")*ind03_t2 # This allows residual covariance on indicator X3 across T1 and T2ind01_t1 ~~ c("res1a", "res1b")*ind01_t1 # This allows residual variance on indicator X1 at T1 ind02_t1 ~~ c("res2a", "res2b")*ind02_t1 # This allows residual variance on indicator X2 at T1ind03_t1 ~~ c("res3a", "res3b")*ind03_t1 # This allows residual variance on indicator X3 at T1ind01_t2 ~~ c("res1a", "res1b")*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ c("res2a", "res2b")*ind02_t2 # This allows residual variance on indicator X2 at T2 ind03_t2 ~~ c("res3a", "res3b")*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind02_t1 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T1ind03_t1 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T1ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T2ind03_t2 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T2'# strict invariance -> not really needed for this analysis# loop across 5 traitsfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# configural - current template_filled_config_current <-str_replace_all(trait_template_main_config, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_main_fit_config_current <-lavaan(template_filled_config_current, data =bind_rows(df_sbsa2_wide_pers_sa_mod, df_sbsa2_wide_pers_sb_mod) %>%left_join(group_assign), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando")eval(call("<-", as.name(paste0("lcs_", short_name, "_main_config_current")), template_filled_config_current))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_config_current")), trait_main_fit_config_current))# configural - ideal template_filled_config_ideal <-str_replace_all(trait_template_main_config, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_main_fit_config_ideal <-lavaan(template_filled_config_ideal, data =bind_rows(df_sbsa2_wide_pers_sa_mod, df_sbsa2_wide_pers_sb_mod) %>%left_join(group_assign), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando")eval(call("<-", as.name(paste0("lcs_", short_name, "_main_config_ideal")), template_filled_config_ideal))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_config_ideal")), trait_main_fit_config_ideal))# weak - current template_filled_weak_current <-str_replace_all(trait_template_main_weak, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_main_fit_weak_current <-lavaan(template_filled_weak_current, data =bind_rows(df_sbsa2_wide_pers_sa_mod, df_sbsa2_wide_pers_sb_mod) %>%left_join(group_assign), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal ="loadings")eval(call("<-", as.name(paste0("lcs_", short_name, "_main_weak_current")), template_filled_weak_current))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_weak_current")), trait_main_fit_weak_current))# weak - ideal template_filled_weak_ideal <-str_replace_all(trait_template_main_weak, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_main_fit_weak_ideal <-lavaan(template_filled_weak_ideal, data =bind_rows(df_sbsa2_wide_pers_sa_mod, df_sbsa2_wide_pers_sb_mod) %>%left_join(group_assign), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal ="loadings")eval(call("<-", as.name(paste0("lcs_", short_name, "_main_weak_ideal")), template_filled_weak_ideal))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_weak_ideal")), trait_main_fit_weak_ideal))# strong - current template_filled_strong_current <-str_replace_all(trait_template_main_strong, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_main_fit_strong_current <-lavaan(template_filled_strong_current, data =bind_rows(df_sbsa2_wide_pers_sa_mod, df_sbsa2_wide_pers_sb_mod) %>%left_join(group_assign), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal =c("intercepts", "loadings"))eval(call("<-", as.name(paste0("lcs_", short_name, "_main_strong_current")), template_filled_strong_current))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_strong_current")), trait_main_fit_strong_current))# strong - ideal template_filled_strong_ideal <-str_replace_all(trait_template_main_strong, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_main_fit_strong_ideal <-lavaan(template_filled_strong_ideal, data =bind_rows(df_sbsa2_wide_pers_sa_mod, df_sbsa2_wide_pers_sb_mod) %>%left_join(group_assign), estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal =c("intercepts", "loadings"))eval(call("<-", as.name(paste0("lcs_", short_name, "_main_strong_ideal")), template_filled_strong_ideal))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_strong_ideal")), trait_main_fit_strong_ideal))}
6.8.4.2 Current personality traits
Extraversion (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_extra_main_config_current, fit_lcs_extra_main_weak_current, fit_lcs_extra_main_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_extra_main_config_current 24 7146.6 7282.0 53.117
fit_lcs_extra_main_weak_current 26 7143.3 7269.6 53.765 0.62163 2
fit_lcs_extra_main_strong_current 30 7137.3 7245.6 55.770 2.00804 4
Pr(>Chisq)
fit_lcs_extra_main_config_current
fit_lcs_extra_main_weak_current 0.7328
fit_lcs_extra_main_strong_current 0.7343
# show model with varying latent change parameters # -> key parameter is "d_extra_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_extra_current <- broom::tidy(fit_lcs_extra_main_weak_current, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="extra"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_extra_current, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_extra_1 ~1
d_int_a
0.091
0.125
0.345
4.059
0
d_extra_1 ~1
d_int_b
0.090
0.123
0.322
3.653
0
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_extra_main_strong_current, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="extra"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ")), digits =3)
Very similar change in extraversion in both groups. No significant differences according to the LRTs.
Agreeableness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_agree_main_config_current, fit_lcs_agree_main_weak_current, fit_lcs_agree_main_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_agree_main_config_current 24 5825.7 5961.1 19.373
fit_lcs_agree_main_weak_current 26 5822.4 5948.8 20.038 0.64885 2
fit_lcs_agree_main_strong_current 30 5815.3 5923.6 20.936 0.88490 4
Pr(>Chisq)
fit_lcs_agree_main_config_current
fit_lcs_agree_main_weak_current 0.7229
fit_lcs_agree_main_strong_current 0.9267
# show model with varying latent change parameters # -> key parameter is "d_agree_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_agree_current <- broom::tidy(fit_lcs_agree_main_weak_current, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="agree"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_agree_current, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_agree_1 ~1
d_int_a
0.027
0.044
0.130
1.481
0.139
d_agree_1 ~1
d_int_b
0.020
0.032
0.098
1.103
0.270
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_agree_main_strong_current, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="agree"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ")), digits =3)
No change in agreeableness in both groups (increase is slightly larger in self-acceptance group). No significant differences according to the LRTs.
Conscientiousness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_consc_main_config_current, fit_lcs_consc_main_weak_current, fit_lcs_consc_main_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_consc_main_config_current 24 6334.0 6469.4 27.962
fit_lcs_consc_main_weak_current 26 6333.8 6460.2 31.801 4.1607 2
fit_lcs_consc_main_strong_current 30 6332.5 6440.8 38.436 6.5293 4
Pr(>Chisq)
fit_lcs_consc_main_config_current
fit_lcs_consc_main_weak_current 0.1249
fit_lcs_consc_main_strong_current 0.1630
# show model with varying latent change parameters # -> key parameter is "d_consc_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_consc_current <- broom::tidy(fit_lcs_consc_main_weak_current, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="consc"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_consc_current, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_consc_1 ~1
d_int_a
0.076
0.101
0.211
2.849
0.004
d_consc_1 ~1
d_int_b
0.101
0.134
0.252
3.582
0.000
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_consc_main_strong_current, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="consc"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ")), digits =3)
Similar change in conscientiousness in both groups (increase is slightly larger in self-acceptance group). No significant differences according to the LRTs.
Neuroticism (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_neuro_main_config_current, fit_lcs_neuro_main_weak_current, fit_lcs_neuro_main_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_neuro_main_config_current 24 6778.6 6914 22.183
fit_lcs_neuro_main_weak_current 26 6775.6 6902 23.190 1.1350 2
fit_lcs_neuro_main_strong_current 30 6769.7 6878 25.319 2.1364 4
Pr(>Chisq)
fit_lcs_neuro_main_config_current
fit_lcs_neuro_main_weak_current 0.5669
fit_lcs_neuro_main_strong_current 0.7107
# show model with varying latent change parameters # -> key parameter is "d_neuro_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_neuro_current <- broom::tidy(fit_lcs_neuro_main_weak_current, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="neuro"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_neuro_current, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_neuro_1 ~1
d_int_a
-0.177
-0.206
-0.474
-6.345
0
d_neuro_1 ~1
d_int_b
-0.179
-0.208
-0.390
-5.609
0
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_neuro_main_strong_current, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="neuro"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ")), digits =3)
Similar change in neuroticism in both groups (decrease is slightly larger in self-improvement group). No significant differences according to the LRTs.
Openness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_openn_main_config_current, fit_lcs_openn_main_weak_current, fit_lcs_openn_main_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_openn_main_config_current 24 6192.9 6328.3 22.020
fit_lcs_openn_main_weak_current 26 6196.1 6322.4 29.146 6.6790 2
fit_lcs_openn_main_strong_current 30 6196.0 6304.3 37.047 7.9676 4
Pr(>Chisq)
fit_lcs_openn_main_config_current
fit_lcs_openn_main_weak_current 0.03546 *
fit_lcs_openn_main_strong_current 0.09277 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_openn_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_openn_current <- broom::tidy(fit_lcs_openn_main_weak_current, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="openn"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_openn_current, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_openn_1 ~1
d_int_a
0.076
0.118
0.314
3.416
0.001
d_openn_1 ~1
d_int_b
0.077
0.119
0.295
3.243
0.001
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_openn_main_strong_current, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="openn"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ")), digits =3)
Similar (quite small) change in openness in both groups (increase is slightly larger in self-acceptance group). No significant differences according to the LRTs.
6.8.4.3 Ideal personality traits
Extraversion (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_extra_main_config_ideal, fit_lcs_extra_main_weak_ideal, fit_lcs_extra_main_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_extra_main_config_ideal 24 6118.2 6253.6 34.532
fit_lcs_extra_main_weak_ideal 26 6116.0 6242.3 36.296 1.5068 2
fit_lcs_extra_main_strong_ideal 30 6109.0 6217.4 37.365 1.0521 4
Pr(>Chisq)
fit_lcs_extra_main_config_ideal
fit_lcs_extra_main_weak_ideal 0.4708
fit_lcs_extra_main_strong_ideal 0.9018
# show model with varying latent change parameters # -> key parameter is "d_extra_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_extra_ideal <- broom::tidy(fit_lcs_extra_main_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="extra"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_extra_ideal, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_extra_1 ~1
d_int_a
-0.018
-0.035
-0.071
-0.748
0.454
d_extra_1 ~1
d_int_b
-0.022
-0.043
-0.086
-0.939
0.348
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_extra_main_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="extra"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ")), digits =3)
Slight decrease in extraversion that is n.s. and slightly more pronounced in the self-acceptance group.
Agreeableness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_agree_main_config_ideal, fit_lcs_agree_main_weak_ideal, fit_lcs_agree_main_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_agree_main_config_ideal 24 5819.9 5955.3 32.897
fit_lcs_agree_main_weak_ideal 26 5816.2 5942.5 33.204 0.30674 2
fit_lcs_agree_main_strong_ideal 30 5810.7 5919.0 35.765 2.51578 4
Pr(>Chisq)
fit_lcs_agree_main_config_ideal
fit_lcs_agree_main_weak_ideal 0.8578
fit_lcs_agree_main_strong_ideal 0.6418
# show model with varying latent change parameters # -> key parameter is "d_agree_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_agree_ideal <- broom::tidy(fit_lcs_agree_main_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="agree"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_agree_ideal, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_agree_1 ~1
d_int_a
0.007
0.012
0.023
0.292
0.771
d_agree_1 ~1
d_int_b
-0.030
-0.054
-0.112
-1.357
0.175
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_agree_main_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="agree"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ")), digits =3)
Almost no change in agreeableness in both groups (n.s.). Slight decrease in self-acceptance group. No significant differences according to the LRTs.
Conscientiousness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_consc_main_config_ideal, fit_lcs_consc_main_weak_ideal, fit_lcs_consc_main_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_consc_main_config_ideal 24 5019.9 5155.3 23.423
fit_lcs_consc_main_weak_ideal 26 5016.1 5142.5 23.669 0.21133 2
fit_lcs_consc_main_strong_ideal 30 5010.0 5118.3 25.547 1.86945 4
Pr(>Chisq)
fit_lcs_consc_main_config_ideal
fit_lcs_consc_main_weak_ideal 0.8997
fit_lcs_consc_main_strong_ideal 0.7598
# show model with varying latent change parameters # -> key parameter is "d_consc_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_consc_ideal <- broom::tidy(fit_lcs_consc_main_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="consc"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_consc_ideal, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_consc_1 ~1
d_int_a
0.027
0.054
0.086
1.162
0.245
d_consc_1 ~1
d_int_b
0.010
0.020
0.036
0.441
0.659
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_consc_main_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="consc"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ")), digits =3)
Almost no change in conscientiousness in both groups (n.s.). Increase is slightly less pronounced in self-acceptance group. No significant differences according to the LRTs.
Neuroticism (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_neuro_main_config_ideal, fit_lcs_neuro_main_weak_ideal, fit_lcs_neuro_main_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_neuro_main_config_ideal 24 5249.5 5384.9 27.220
fit_lcs_neuro_main_weak_ideal 26 5251.1 5377.5 32.857 4.4468 2
fit_lcs_neuro_main_strong_ideal 30 5245.2 5353.5 34.896 2.0381 4
Pr(>Chisq)
fit_lcs_neuro_main_config_ideal
fit_lcs_neuro_main_weak_ideal 0.1082
fit_lcs_neuro_main_strong_ideal 0.7288
# show model with varying latent change parameters # -> key parameter is "d_neuro_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_neuro_ideal <- broom::tidy(fit_lcs_neuro_main_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="neuro"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_neuro_ideal, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_neuro_1 ~1
d_int_a
-0.003
-0.007
-0.010
-0.126
0.900
d_neuro_1 ~1
d_int_b
0.043
0.085
0.116
1.552
0.121
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_neuro_main_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="neuro"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ")), digits =3)
Very similar change in neuroticism in both groups (slight decrease in self-improvement group). No significant differences according to the LRTs.
Openness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_openn_main_config_ideal, fit_lcs_openn_main_weak_ideal, fit_lcs_openn_main_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_openn_main_config_ideal 24 5955.9 6091.3 45.711
fit_lcs_openn_main_weak_ideal 26 5952.8 6079.2 46.574 0.7624 2
fit_lcs_openn_main_strong_ideal 30 5948.8 6057.1 50.566 4.0761 4
Pr(>Chisq)
fit_lcs_openn_main_config_ideal
fit_lcs_openn_main_weak_ideal 0.6831
fit_lcs_openn_main_strong_ideal 0.3958
# show model with varying latent change parameters # -> key parameter is "d_openn_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_main_lcs_openn_ideal <- broom::tidy(fit_lcs_openn_main_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="openn"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_openn_ideal, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_openn_1 ~1
d_int_a
0.015
0.026
0.071
0.924
0.356
d_openn_1 ~1
d_int_b
0.016
0.028
0.112
1.143
0.253
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_openn_main_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="openn"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ")), digits =3)
Similar change in ideal-personality openness in both groups (slight decrease in self-improvement group). No significant differences according to the LRTs.
6.8.5 Latent personality change: intervention vs. control
6.8.5.1 Run models
After seeing that the two intervention groups do not differ substantially, we want to test the control group vs. the two intervention groups (all from T1 to T2).
# new data framedf_sbsa2_wide_pers_int_cg <- df_sbsa2_wide_pers %>%mutate(group_cg =ifelse(rando=="Waitlist-Control", "Control", "Intervention"))df_sbsa2_wide_pers_int_cg %>%group_by(group_cg) %>%tally()
# A tibble: 2 × 2
group_cg n
<chr> <int>
1 Control 175
2 Intervention 674
Adapt latent change score model from above (but without any moderation) and add grouping factor in estimation (adding vectorized equality constraints to the model step by step):
Show the code
# create templates: -> same templates as above, we're only setting up a different group comparison!# loop across 5 traitsfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# configural - current template_filled_config_current_cg <-str_replace_all(trait_template_main_config, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_main_fit_config_current_cg <-lavaan(template_filled_config_current_cg, data = df_sbsa2_wide_pers_int_cg, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg")eval(call("<-", as.name(paste0("lcs_", short_name, "_main_config_current_cg")), template_filled_config_current_cg))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_config_current_cg")), trait_main_fit_config_current_cg))# configural - ideal template_filled_config_ideal_cg <-str_replace_all(trait_template_main_config, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_main_fit_config_ideal_cg <-lavaan(template_filled_config_ideal_cg, data = df_sbsa2_wide_pers_int_cg, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg")eval(call("<-", as.name(paste0("lcs_", short_name, "_main_config_ideal_cg")), template_filled_config_ideal_cg))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_config_ideal_cg")), trait_main_fit_config_ideal_cg))# weak - current template_filled_weak_current_cg <-str_replace_all(trait_template_main_weak, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_main_fit_weak_current_cg <-lavaan(template_filled_weak_current_cg, data = df_sbsa2_wide_pers_int_cg, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal ="loadings")eval(call("<-", as.name(paste0("lcs_", short_name, "_main_weak_current_cg")), template_filled_weak_current_cg))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_weak_current_cg")), trait_main_fit_weak_current_cg))# weak - ideal template_filled_weak_ideal_cg <-str_replace_all(trait_template_main_weak, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_main_fit_weak_ideal_cg <-lavaan(template_filled_weak_ideal_cg, data = df_sbsa2_wide_pers_int_cg, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal ="loadings")eval(call("<-", as.name(paste0("lcs_", short_name, "_main_weak_ideal_cg")), template_filled_weak_ideal_cg))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_weak_ideal_cg")), trait_main_fit_weak_ideal_cg))# strong - current template_filled_strong_current_cg <-str_replace_all(trait_template_main_strong, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_main_fit_strong_current_cg <-lavaan(template_filled_strong_current_cg, data = df_sbsa2_wide_pers_int_cg, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal =c("intercepts", "loadings"))eval(call("<-", as.name(paste0("lcs_", short_name, "_main_strong_current_cg")), template_filled_strong_current_cg))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_strong_current_cg")), trait_main_fit_strong_current_cg))# strong - ideal template_filled_strong_ideal_cg <-str_replace_all(trait_template_main_strong, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_main_fit_strong_ideal_cg <-lavaan(template_filled_strong_ideal_cg, data = df_sbsa2_wide_pers_int_cg, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="group_cg", group.equal =c("intercepts", "loadings"))eval(call("<-", as.name(paste0("lcs_", short_name, "_main_strong_ideal_cg")), template_filled_strong_ideal_cg))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_main_strong_ideal_cg")), trait_main_fit_strong_ideal_cg))}
Control group comes first in the multigroup SEM: a = waitlist control group (N = 175), b = both intervention groups (N = 674)
6.8.5.2 Current personality traits
Extraversion (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_extra_main_config_current_cg, fit_lcs_extra_main_weak_current_cg, fit_lcs_extra_main_strong_current_cg)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_extra_main_config_current_cg 24 8961.3 9103.6 61.348
fit_lcs_extra_main_weak_current_cg 26 8958.1 9091.0 62.158 0.78754 2
fit_lcs_extra_main_strong_current_cg 30 8952.0 9065.8 64.005 1.86667 4
Pr(>Chisq)
fit_lcs_extra_main_config_current_cg
fit_lcs_extra_main_weak_current_cg 0.6745
fit_lcs_extra_main_strong_current_cg 0.7603
# show model with varying latent change parameters # -> key parameter is "d_extra_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = waitlist control group, b = both intervention groups)params_main_lcs_extra_current_cg <- broom::tidy(fit_lcs_extra_main_weak_current_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="extra"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_extra_current_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_extra_1 ~1
d_int_a
0.067
0.092
0.249
2.114
0.035
d_extra_1 ~1
d_int_b
0.093
0.127
0.335
5.377
0.000
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_extra_main_strong_current_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="extra"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ")), digits =3)
No significant differences according to the LRTs but slight difference visible (stronger increase in intervention groups). Latent change score only significant (at p < .001) in the intervention groups.
Agreeableness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_agree_main_config_current_cg, fit_lcs_agree_main_weak_current_cg, fit_lcs_agree_main_strong_current_cg)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_agree_main_config_current_cg 24 7366.5 7508.9 20.132
fit_lcs_agree_main_weak_current_cg 26 7363.4 7496.3 21.048 0.84014 2
fit_lcs_agree_main_strong_current_cg 30 7358.6 7472.5 24.196 3.16073 4
Pr(>Chisq)
fit_lcs_agree_main_config_current_cg
fit_lcs_agree_main_weak_current_cg 0.6570
fit_lcs_agree_main_strong_current_cg 0.5313
# show model with varying latent change parameters # -> key parameter is "d_agree_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = waitlist control group, b = both intervention groups)params_main_lcs_agree_current_cg <- broom::tidy(fit_lcs_agree_main_weak_current_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="agree"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_agree_current_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_agree_1 ~1
d_int_a
0.060
0.099
0.357
2.669
0.008
d_agree_1 ~1
d_int_b
0.022
0.036
0.112
1.814
0.070
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_agree_main_strong_current_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="agree"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ")), digits =3)
No change in agreeableness in both groups (at p < .001). Effect is even slightly larger in control group. No significant differences according to the LRTs.
Conscientiousness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_consc_main_config_current_cg, fit_lcs_consc_main_weak_current_cg, fit_lcs_consc_main_strong_current_cg)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_consc_main_config_current_cg 24 7918.3 8060.6 43.856
fit_lcs_consc_main_weak_current_cg 26 7916.0 8048.9 45.611 1.6745 2
fit_lcs_consc_main_strong_current_cg 30 7908.4 8022.3 45.965 0.3538 4
Pr(>Chisq)
fit_lcs_consc_main_config_current_cg
fit_lcs_consc_main_weak_current_cg 0.4329
fit_lcs_consc_main_strong_current_cg 0.9861
# show model with varying latent change parameters # -> key parameter is "d_consc_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = waitlist control group, b = both intervention groups)params_main_lcs_consc_current_cg <- broom::tidy(fit_lcs_consc_main_weak_current_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="consc"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_consc_current_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_consc_1 ~1
d_int_a
0.100
0.133
0.256
2.580
0.01
d_consc_1 ~1
d_int_b
0.089
0.118
0.232
4.549
0.00
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_consc_main_strong_current_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="consc"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ")), digits =3)
Similar change in conscientiousness in both groups (increase is, however, not significant in the control group at p < .001). No significant differences according to the LRTs.
Neuroticism (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_neuro_main_config_current_cg, fit_lcs_neuro_main_weak_current_cg, fit_lcs_neuro_main_strong_current_cg)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_neuro_main_config_current_cg 24 8492.1 8634.4 20.359
fit_lcs_neuro_main_weak_current_cg 26 8488.3 8621.1 20.541 0.2174 2
fit_lcs_neuro_main_strong_current_cg 30 8484.3 8598.1 24.562 4.0126 4
Pr(>Chisq)
fit_lcs_neuro_main_config_current_cg
fit_lcs_neuro_main_weak_current_cg 0.8970
fit_lcs_neuro_main_strong_current_cg 0.4043
# show model with varying latent change parameters # -> key parameter is "d_neuro_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = waitlist control group, b = both intervention groups)params_main_lcs_neuro_current_cg <- broom::tidy(fit_lcs_neuro_main_weak_current_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="neuro"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_neuro_current_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_neuro_1 ~1
d_int_a
-0.132
-0.153
-0.314
-3.112
0.002
d_neuro_1 ~1
d_int_b
-0.177
-0.205
-0.421
-8.294
0.000
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_neuro_main_strong_current_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="neuro"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ")), digits =3)
No significant differences according to the LRTs but slight difference visible (stronger neuroticism decrease in intervention groups). Latent change score only significant (at p < .001) in the intervention groups.
Openness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_openn_main_config_current_cg, fit_lcs_openn_main_weak_current_cg, fit_lcs_openn_main_strong_current_cg)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_openn_main_config_current_cg 24 7709.2 7851.5 20.211
fit_lcs_openn_main_weak_current_cg 26 7706.1 7838.9 21.083 0.8479 2
fit_lcs_openn_main_strong_current_cg 30 7702.8 7816.7 25.861 4.6250 4
Pr(>Chisq)
fit_lcs_openn_main_config_current_cg
fit_lcs_openn_main_weak_current_cg 0.6545
fit_lcs_openn_main_strong_current_cg 0.3280
# show model with varying latent change parameters # -> key parameter is "d_openn_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = waitlist control group, b = both intervention groups)params_main_lcs_openn_current_cg <- broom::tidy(fit_lcs_openn_main_weak_current_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="openn"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_openn_current_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_openn_1 ~1
d_int_a
0.020
0.031
0.070
0.611
0.541
d_openn_1 ~1
d_int_b
0.077
0.119
0.304
4.685
0.000
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_openn_main_strong_current_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="openn"& reference=="current"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ")), digits =3)
No significant differences according to the LRTs but difference visible, with stronger openness increase in intervention groups. Latent change score only significant in the intervention groups.
6.8.5.3 Ideal personality traits
Extraversion (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_extra_main_config_ideal_cg, fit_lcs_extra_main_weak_ideal_cg, fit_lcs_extra_main_strong_ideal_cg)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_extra_main_config_ideal_cg 24 7787.2 7929.5 34.170
fit_lcs_extra_main_weak_ideal_cg 26 7788.7 7921.5 39.678 4.0600 2
fit_lcs_extra_main_strong_ideal_cg 30 7782.6 7896.5 41.587 1.8754 4
Pr(>Chisq)
fit_lcs_extra_main_config_ideal_cg
fit_lcs_extra_main_weak_ideal_cg 0.1313
fit_lcs_extra_main_strong_ideal_cg 0.7587
# show model with varying latent change parameters # -> key parameter is "d_extra_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = waitlist control group, b = both intervention groups)params_main_lcs_extra_ideal_cg <- broom::tidy(fit_lcs_extra_main_weak_ideal_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="extra"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_extra_ideal_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_extra_1 ~1
d_int_a
-0.006
-0.011
-0.023
-0.179
0.858
d_extra_1 ~1
d_int_b
-0.019
-0.038
-0.080
-1.221
0.222
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_extra_main_strong_ideal_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="extra"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ")), digits =3)
Slight decrease in extraversion that is n.s. and slightly more pronounced in the intervention groups. No significant differences according to the LRTs.
Agreeableness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_agree_main_config_ideal_cg, fit_lcs_agree_main_weak_ideal_cg, fit_lcs_agree_main_strong_ideal_cg)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_agree_main_config_ideal_cg 24 7349.7 7492.0 32.746
fit_lcs_agree_main_weak_ideal_cg 26 7350.6 7483.4 37.683 4.4495 2
fit_lcs_agree_main_strong_ideal_cg 30 7343.8 7457.7 38.908 1.1770 4
Pr(>Chisq)
fit_lcs_agree_main_config_ideal_cg
fit_lcs_agree_main_weak_ideal_cg 0.1081
fit_lcs_agree_main_strong_ideal_cg 0.8819
# show model with varying latent change parameters # -> key parameter is "d_agree_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = waitlist control group, b = both intervention groups)params_main_lcs_agree_ideal_cg <- broom::tidy(fit_lcs_agree_main_weak_ideal_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="agree"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_agree_ideal_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_agree_1 ~1
d_int_a
-0.015
-0.027
-0.046
-0.434
0.664
d_agree_1 ~1
d_int_b
-0.011
-0.021
-0.041
-0.718
0.473
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_agree_main_strong_ideal_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="agree"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ")), digits =3)
Almost no change in agreeableness in both groups (n.s.). No significant differences according to the LRTs.
Conscientiousness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_consc_main_config_ideal_cg, fit_lcs_consc_main_weak_ideal_cg, fit_lcs_consc_main_strong_ideal_cg)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_consc_main_config_ideal_cg 24 6279.8 6422.1 18.930
fit_lcs_consc_main_weak_ideal_cg 26 6277.6 6410.5 20.817 1.641 2
fit_lcs_consc_main_strong_ideal_cg 30 6272.0 6385.9 23.213 2.413 4
Pr(>Chisq)
fit_lcs_consc_main_config_ideal_cg
fit_lcs_consc_main_weak_ideal_cg 0.4402
fit_lcs_consc_main_strong_ideal_cg 0.6603
# show model with varying latent change parameters # -> key parameter is "d_consc_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = waitlist control group, b = both intervention groups)params_main_lcs_consc_ideal_cg <- broom::tidy(fit_lcs_consc_main_weak_ideal_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="consc"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_consc_ideal_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_consc_1 ~1
d_int_a
-0.031
-0.063
-0.099
-0.960
0.337
d_consc_1 ~1
d_int_b
0.018
0.037
0.061
1.122
0.262
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_consc_main_strong_ideal_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="consc"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ")), digits =3)
Almost no change in conscientiousness in both groups (n.s.). No significant differences according to the LRTs.
Neuroticism (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_neuro_main_config_ideal_cg, fit_lcs_neuro_main_weak_ideal_cg, fit_lcs_neuro_main_strong_ideal_cg)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_neuro_main_config_ideal_cg 24 6589.6 6731.9 20.835
fit_lcs_neuro_main_weak_ideal_cg 26 6601.9 6734.8 37.160 12.0985 2
fit_lcs_neuro_main_strong_ideal_cg 30 6594.2 6708.1 37.434 0.2717 4
Pr(>Chisq)
fit_lcs_neuro_main_config_ideal_cg
fit_lcs_neuro_main_weak_ideal_cg 0.00236 **
fit_lcs_neuro_main_strong_ideal_cg 0.99157
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_neuro_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = waitlist control group, b = both intervention groups)params_main_lcs_neuro_ideal_cg <- broom::tidy(fit_lcs_neuro_main_weak_ideal_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="neuro"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_neuro_ideal_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_neuro_1 ~1
d_int_a
0.025
0.048
0.091
0.758
0.448
d_neuro_1 ~1
d_int_b
0.019
0.037
0.054
0.970
0.332
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_neuro_main_strong_ideal_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="neuro"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ")), digits =3)
Similar change in neuroticism in both groups. No significant differences according to the LRTs (at p < .001). Some evidence for significant increase in model fit when constraining factor structures to be equal (weak MI), but this does not concern the latent change score yet.
Openness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_openn_main_config_ideal_cg, fit_lcs_openn_main_weak_ideal_cg, fit_lcs_openn_main_strong_ideal_cg)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_openn_main_config_ideal_cg 24 7407.5 7549.8 44.796
fit_lcs_openn_main_weak_ideal_cg 26 7406.6 7539.4 47.870 2.5646 2
fit_lcs_openn_main_strong_ideal_cg 30 7402.6 7516.5 51.960 3.9391 4
Pr(>Chisq)
fit_lcs_openn_main_config_ideal_cg
fit_lcs_openn_main_weak_ideal_cg 0.2774
fit_lcs_openn_main_strong_ideal_cg 0.4143
# show model with varying latent change parameters # -> key parameter is "d_openn_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = waitlist control group, b = both intervention groups)params_main_lcs_openn_ideal_cg <- broom::tidy(fit_lcs_openn_main_weak_ideal_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="openn"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ")) %>%mutate(sig_diff =" ")kable(params_main_lcs_openn_ideal_cg, digits =3)
term
label
estimate
beta
std.all
statistic
p.value
sig_diff
d_openn_1 ~1
d_int_a
0.014
0.025
0.115
0.737
0.461
d_openn_1 ~1
d_int_b
0.016
0.027
0.090
1.513
0.130
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_openn_main_strong_ideal_cg, conf.int =TRUE, conf.level =0.999) %>%mutate(beta = estimate / (sd_pers_st2 %>%filter(trait=="openn"& reference=="ideal"& time==1) %>%pull(sd_trait))) %>%select(term, label, estimate, beta, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ")), digits =3)
6.8.6 Multilevel models: intervention groups vs. control group
Does it look differently if we test the control group vs. the two intervention groups (all from T1 to T2) using multilevel models instead of the multigroup SEM comparison?
We’ll do this for current personality, ideal personality, and well-being.
# unlistdf_mlm_check_curr_unlist <-as.data.frame(summary(df_mlm_check_curr[[1]])$coefficients) %>%as_tibble()for (i in2:length(df_mlm_check_curr)) { df_mlm_check_curr_unlist <-bind_rows(df_mlm_check_curr_unlist, as.data.frame(summary(df_mlm_check_curr[[i]])$coefficients) %>%as_tibble())}# label etc.df_mlm_check_curr_unlist <- df_mlm_check_curr_unlist %>%# order by BFI traitsmutate(outcome =rep(sort(names(b5_vars)), each=4), term =c(rep(c("Intercept", "time (1 vs. 2)", "group (control vs. intv.)", "time*group"), 20))) %>%rename(p =`Pr(>|t|)`, std_err =`Std. Error`, est = Estimate) %>%select(outcome, term, est, std_err, p) %>%mutate(sig =ifelse(p < .05, ifelse(p < .01, ifelse(p < .001, "***", "**"), "*"), " ")) %>%arrange(factor(outcome, levels = (names(b5_vars))))# display -> only for domains for nowkable(df_mlm_check_curr_unlist[1:20, ] , digits =3)
outcome
term
est
std_err
p
sig
extraversion
Intercept
2.798
0.055
0.000
***
extraversion
time (1 vs. 2)
0.090
0.035
0.011
*
extraversion
group (control vs. intv.)
0.012
0.061
0.841
extraversion
time*group
0.028
0.040
0.485
agreeableness
Intercept
3.606
0.045
0.000
***
agreeableness
time (1 vs. 2)
0.067
0.032
0.037
*
agreeableness
group (control vs. intv.)
0.012
0.051
0.808
agreeableness
time*group
-0.002
0.036
0.959
conscientiousness
Intercept
3.389
0.057
0.000
***
conscientiousness
time (1 vs. 2)
0.097
0.038
0.011
*
conscientiousness
group (control vs. intv.)
-0.004
0.064
0.948
conscientiousness
time*group
-0.008
0.043
0.852
neuroticism
Intercept
3.333
0.065
0.000
***
neuroticism
time (1 vs. 2)
-0.131
0.042
0.002
**
neuroticism
group (control vs. intv.)
-0.096
0.073
0.184
neuroticism
time*group
-0.044
0.047
0.352
openness
Intercept
3.743
0.049
0.000
***
openness
time (1 vs. 2)
0.020
0.032
0.544
openness
group (control vs. intv.)
-0.051
0.055
0.353
openness
time*group
0.059
0.036
0.101
These are unstandardized effect sizes, interpretable on the original scale.
Control group comes first: 0 = waitlist control group (N = 175), 1 = both intervention groups (N = 674)
6.8.6.3 Results: ideal personality
Just the domains for now (not the facets):
Show the code
# unlistdf_mlm_check_ideal_unlist <-as.data.frame(summary(df_mlm_check_ideal[[1]])$coefficients) %>%as_tibble()for (i in2:length(df_mlm_check_ideal)) { df_mlm_check_ideal_unlist <-bind_rows(df_mlm_check_ideal_unlist, as.data.frame(summary(df_mlm_check_ideal[[i]])$coefficients) %>%as_tibble())}# label etc.df_mlm_check_ideal_unlist <- df_mlm_check_ideal_unlist %>%# order by BFI traitsmutate(outcome =rep(sort(names(b5_vars)), each=4), term =c(rep(c("Intercept", "time (1 vs. 2)", "group (control vs. intv.)", "time*group"), 20))) %>%rename(p =`Pr(>|t|)`, std_err =`Std. Error`, est = Estimate) %>%select(outcome, term, est, std_err, p) %>%mutate(sig =ifelse(p < .05, ifelse(p < .01, ifelse(p < .001, "***", "**"), "*"), " ")) %>%arrange(factor(outcome, levels = (names(b5_vars))))# display -> only for domains for nowkable(df_mlm_check_ideal_unlist[1:20, ] , digits =3)
outcome
term
est
std_err
p
sig
extraversion
Intercept
3.919
0.038
0.000
***
extraversion
time (1 vs. 2)
-0.021
0.034
0.533
extraversion
group (control vs. intv.)
-0.004
0.043
0.924
extraversion
time*group
0.002
0.038
0.955
agreeableness
Intercept
4.104
0.041
0.000
***
agreeableness
time (1 vs. 2)
-0.011
0.034
0.743
agreeableness
group (control vs. intv.)
-0.035
0.046
0.446
agreeableness
time*group
0.000
0.039
0.994
conscientiousness
Intercept
4.418
0.038
0.000
***
conscientiousness
time (1 vs. 2)
-0.038
0.033
0.251
conscientiousness
group (control vs. intv.)
-0.001
0.043
0.978
conscientiousness
time*group
0.056
0.037
0.134
neuroticism
Intercept
1.676
0.038
0.000
***
neuroticism
time (1 vs. 2)
0.024
0.035
0.498
neuroticism
group (control vs. intv.)
0.012
0.043
0.782
neuroticism
time*group
-0.004
0.040
0.927
openness
Intercept
4.154
0.043
0.000
***
openness
time (1 vs. 2)
0.018
0.035
0.600
openness
group (control vs. intv.)
-0.041
0.048
0.400
openness
time*group
0.036
0.039
0.350
These are unstandardized effect sizes, interpretable on the original scale.
Control group comes first: 0 = waitlist control group (N = 175), 1 = both intervention groups (N = 674)
6.8.6.4 Results: well-being
Show the code
# unlistdf_mlm_check_wb_unlist <-as.data.frame(summary(df_mlm_check_wb[[1]])$coefficients) %>%as_tibble()for (i in2:length(df_mlm_check_wb)) { df_mlm_check_wb_unlist <-bind_rows(df_mlm_check_wb_unlist, as.data.frame(summary(df_mlm_check_wb[[i]])$coefficients) %>%as_tibble())}# label etc.df_mlm_check_wb_unlist <- df_mlm_check_wb_unlist %>%# order by BFI traitsmutate(outcome =rep(c("Self-concept clarity", "Meaning in life", "Self-esteem", "Life satisfaction"), each=4), term =c(rep(c("Intercept", "time (1 vs. 2)", "group (control vs. intv.)", "time*group"), 4))) %>%rename(p =`Pr(>|t|)`, std_err =`Std. Error`, est = Estimate) %>%select(outcome, term, est, std_err, p) %>%mutate(sig =ifelse(p < .05, ifelse(p < .01, ifelse(p < .001, "***", "**"), "*"), " ")) %>%arrange(factor(outcome, levels = (names(b5_vars))))# display -> only for domains for nowkable(df_mlm_check_wb_unlist, digits =3)
outcome
term
est
std_err
p
sig
Self-concept clarity
Intercept
3.066
0.068
0.000
***
Self-concept clarity
time (1 vs. 2)
0.081
0.056
0.148
Self-concept clarity
group (control vs. intv.)
-0.093
0.076
0.221
Self-concept clarity
time*group
0.140
0.062
0.025
*
Meaning in life
Intercept
3.507
0.088
0.000
***
Meaning in life
time (1 vs. 2)
0.321
0.071
0.000
***
Meaning in life
group (control vs. intv.)
0.021
0.098
0.827
Meaning in life
time*group
-0.094
0.080
0.241
Self-esteem
Intercept
3.223
0.066
0.000
***
Self-esteem
time (1 vs. 2)
0.206
0.048
0.000
***
Self-esteem
group (control vs. intv.)
-0.027
0.074
0.712
Self-esteem
time*group
0.084
0.054
0.117
Life satisfaction
Intercept
2.683
0.076
0.000
***
Life satisfaction
time (1 vs. 2)
0.220
0.057
0.000
***
Life satisfaction
group (control vs. intv.)
0.048
0.085
0.572
Life satisfaction
time*group
0.037
0.064
0.563
These are unstandardized effect sizes, interpretable on the original scale.
Control group comes first: 0 = waitlist control group (N = 175), 1 = both intervention groups (N = 674)
7 Exploratory findings
7.1 Differences across intervention groups (a)
Now confirmatory in Study 2.
7.2 Personal project dimensions (b)
We will explore b) whether the extent of change/acceptance is related to personal project dimension variables.
Not assessed, anymore, in study 2. Please see study 1 report for results.
7.3 Traits that were selected as change goals (c)
We will explore c) whether there are stronger rates of change/acceptance on traits that were selected as change goals (in the 5 free-form adjectives) than those that were not.
TBD!
7.4 Robustness check (d)
Does self-improvement intervene on current personality trait change (but not ideal personality)? Does self-acceptance intervene on ideal personality trait change (but not current personality)?
kable(df_manip_check_curr_unlist %>%mutate(outcome =rep(sort(names(b5_vars)), each=4), term =c(rep(c("Intercept", "time", "group", "time*group"), 20))) %>%rename(p =`Pr(>|t|)`, std_err =`Std. Error`, est = Estimate) %>%select(outcome, term, est, std_err, p) %>%mutate(sig =ifelse(p < .05, ifelse(p < .01, ifelse(p < .001, "***", "**"), "*"), " ")) %>%arrange(factor(outcome, levels = (names(b5_vars)))), # order by BFI traits, digits =3)
outcome
term
est
std_err
p
sig
extraversion
Intercept
2.845
0.039
0.000
***
extraversion
time
0.113
0.026
0.000
***
extraversion
group
-0.069
0.054
0.203
extraversion
time*group
0.009
0.036
0.800
agreeableness
Intercept
3.633
0.032
0.000
***
agreeableness
time
0.048
0.023
0.038
*
agreeableness
group
-0.030
0.046
0.515
agreeableness
time*group
0.033
0.033
0.316
conscientiousness
Intercept
3.371
0.042
0.000
***
conscientiousness
time
0.075
0.027
0.006
**
conscientiousness
group
0.026
0.059
0.653
conscientiousness
time*group
0.026
0.038
0.490
neuroticism
Intercept
3.220
0.046
0.000
***
neuroticism
time
-0.172
0.030
0.000
***
neuroticism
group
0.033
0.065
0.611
neuroticism
time*group
-0.006
0.042
0.887
openness
Intercept
3.707
0.035
0.000
***
openness
time
0.079
0.023
0.001
***
openness
group
-0.029
0.050
0.555
openness
time*group
-0.001
0.032
0.977
sociability
Intercept
2.485
0.054
0.000
***
sociability
time
0.168
0.037
0.000
***
sociability
group
-0.040
0.076
0.600
sociability
time*group
-0.061
0.053
0.244
assertiveness
Intercept
2.908
0.048
0.000
***
assertiveness
time
0.076
0.035
0.028
*
assertiveness
group
-0.078
0.068
0.250
assertiveness
time*group
0.036
0.048
0.453
energy
Intercept
3.140
0.046
0.000
***
energy
time
0.094
0.038
0.014
*
energy
group
-0.088
0.065
0.176
energy
time*group
0.053
0.054
0.326
compassion
Intercept
3.753
0.041
0.000
***
compassion
time
0.042
0.037
0.254
compassion
group
-0.056
0.057
0.326
compassion
time*group
0.079
0.051
0.124
respectfulness
Intercept
4.035
0.038
0.000
***
respectfulness
time
0.013
0.032
0.680
respectfulness
group
-0.014
0.054
0.804
respectfulness
time*group
-0.002
0.044
0.955
trust
Intercept
3.110
0.045
0.000
***
trust
time
0.097
0.035
0.006
**
trust
group
-0.016
0.064
0.800
trust
time*group
0.011
0.049
0.831
organization
Intercept
3.445
0.052
0.000
***
organization
time
0.056
0.037
0.131
organization
group
0.109
0.074
0.143
organization
time*group
0.023
0.052
0.657
productiveness
Intercept
3.148
0.049
0.000
***
productiveness
time
0.141
0.039
0.000
***
productiveness
group
0.043
0.069
0.538
productiveness
time*group
0.001
0.054
0.978
responsibility
Intercept
3.522
0.045
0.000
***
responsibility
time
0.035
0.036
0.333
responsibility
group
-0.068
0.064
0.284
responsibility
time*group
0.052
0.051
0.311
anxiety
Intercept
3.525
0.050
0.000
***
anxiety
time
-0.147
0.037
0.000
***
anxiety
group
0.093
0.070
0.185
anxiety
time*group
-0.012
0.052
0.817
depression
Intercept
3.144
0.054
0.000
***
depression
time
-0.238
0.039
0.000
***
depression
group
0.004
0.076
0.954
depression
time*group
0.031
0.055
0.572
volatility
Intercept
2.993
0.054
0.000
***
volatility
time
-0.127
0.042
0.002
**
volatility
group
0.001
0.076
0.987
volatility
time*group
-0.045
0.058
0.441
curiosity
Intercept
3.817
0.043
0.000
***
curiosity
time
0.052
0.032
0.106
curiosity
group
-0.014
0.060
0.817
curiosity
time*group
0.006
0.045
0.899
aesthetic
Intercept
3.661
0.047
0.000
***
aesthetic
time
0.047
0.036
0.192
aesthetic
group
-0.087
0.066
0.185
aesthetic
time*group
0.036
0.050
0.474
imagination
Intercept
3.642
0.045
0.000
***
imagination
time
0.141
0.035
0.000
***
imagination
group
0.014
0.063
0.824
imagination
time*group
-0.046
0.049
0.349
No significant group effects (higher trait level in self-improvement group at baseline) and also no significant differences in the changes over time in current-personality trait levels (timeXgroup). Significant (at p < .001) changes over time in current-personality trait levels (time) for 3 of the domains and five of the facets (independent of intervention group membership).
kable(df_manip_check_ideal_unlist %>%mutate(outcome =rep(sort(names(b5_vars)), each=4), term =c(rep(c("Intercept", "time", "group", "time*group"), 20))) %>%rename(p =`Pr(>|t|)`, std_err =`Std. Error`, est = Estimate) %>%select(outcome, term, est, std_err, p) %>%mutate(sig =ifelse(p < .05, ifelse(p < .01, ifelse(p < .001, "***", "**"), "*"), " ")) %>%arrange(factor(outcome, levels = (names(b5_vars)))), # order by BFI traits, digits =3)
outcome
term
est
std_err
p
sig
extraversion
Intercept
3.919
0.027
0.000
***
extraversion
time
-0.023
0.024
0.351
extraversion
group
-0.009
0.038
0.812
extraversion
time*group
0.007
0.034
0.827
agreeableness
Intercept
4.078
0.029
0.000
***
agreeableness
time
0.007
0.024
0.777
agreeableness
group
-0.018
0.041
0.670
agreeableness
time*group
-0.035
0.034
0.300
conscientiousness
Intercept
4.414
0.027
0.000
***
conscientiousness
time
0.027
0.024
0.266
conscientiousness
group
0.005
0.038
0.889
conscientiousness
time*group
-0.018
0.034
0.601
neuroticism
Intercept
1.704
0.028
0.000
***
neuroticism
time
0.004
0.026
0.878
neuroticism
group
-0.032
0.039
0.413
neuroticism
time*group
0.032
0.037
0.381
openness
Intercept
4.140
0.031
0.000
***
openness
time
0.054
0.025
0.035
*
openness
group
-0.052
0.043
0.233
openness
time*group
0.001
0.036
0.971
sociability
Intercept
3.735
0.038
0.000
***
sociability
time
-0.085
0.036
0.020
*
sociability
group
-0.029
0.054
0.583
sociability
time*group
0.060
0.051
0.239
assertiveness
Intercept
3.832
0.037
0.000
***
assertiveness
time
0.001
0.035
0.984
assertiveness
group
0.001
0.052
0.981
assertiveness
time*group
0.002
0.049
0.967
energy
Intercept
4.189
0.034
0.000
***
energy
time
0.016
0.038
0.672
energy
group
0.003
0.048
0.953
energy
time*group
-0.047
0.053
0.384
compassion
Intercept
4.029
0.038
0.000
***
compassion
time
0.016
0.037
0.675
compassion
group
-0.019
0.053
0.721
compassion
time*group
-0.008
0.052
0.885
respectfulness
Intercept
4.454
0.032
0.000
***
respectfulness
time
-0.001
0.029
0.963
respectfulness
group
-0.031
0.045
0.492
respectfulness
time*group
-0.007
0.041
0.862
trust
Intercept
3.751
0.040
0.000
***
trust
time
0.013
0.036
0.728
trust
group
-0.002
0.056
0.965
trust
time*group
-0.099
0.051
0.053
organization
Intercept
4.426
0.032
0.000
***
organization
time
0.006
0.034
0.849
organization
group
0.001
0.045
0.982
organization
time*group
0.031
0.048
0.511
productiveness
Intercept
4.513
0.030
0.000
***
productiveness
time
0.045
0.030
0.137
productiveness
group
0.055
0.042
0.197
productiveness
time*group
-0.052
0.042
0.215
responsibility
Intercept
4.300
0.035
0.000
***
responsibility
time
0.035
0.033
0.288
responsibility
group
-0.031
0.049
0.523
responsibility
time*group
-0.027
0.046
0.562
anxiety
Intercept
1.876
0.035
0.000
***
anxiety
time
0.030
0.039
0.445
anxiety
group
-0.036
0.050
0.466
anxiety
time*group
0.004
0.055
0.947
depression
Intercept
1.499
0.030
0.000
***
depression
time
-0.003
0.031
0.911
depression
group
-0.022
0.042
0.597
depression
time*group
0.040
0.043
0.356
volatility
Intercept
1.736
0.035
0.000
***
volatility
time
-0.018
0.036
0.611
volatility
group
-0.041
0.049
0.409
volatility
time*group
0.066
0.050
0.188
curiosity
Intercept
4.129
0.038
0.000
***
curiosity
time
0.028
0.038
0.455
curiosity
group
-0.046
0.054
0.396
curiosity
time*group
0.002
0.053
0.965
aesthetic
Intercept
3.922
0.039
0.000
***
aesthetic
time
0.108
0.037
0.004
**
aesthetic
group
-0.082
0.056
0.142
aesthetic
time*group
-0.050
0.052
0.334
imagination
Intercept
4.369
0.036
0.000
***
imagination
time
0.024
0.036
0.506
imagination
group
-0.010
0.051
0.842
imagination
time*group
0.028
0.051
0.585
No significant group effects (higher trait level in self-improvement group at baseline) and also no significant differences in the changes over time in ideal-personality trait levels (timeXgroup). No significant changes over time in ideal-personality trait levels (time; independent of intervention group membership).
kable(df_manip_check_curr_fu_unlist %>%mutate(outcome =rep(sort(names(b5_vars)), each=4), term =c(rep(c("Intercept", "time", "group", "time*group"), 20))) %>%rename(p =`Pr(>|t|)`, std_err =`Std. Error`, est = Estimate) %>%select(outcome, term, est, std_err, p) %>%mutate(sig =ifelse(p < .05, ifelse(p < .01, ifelse(p < .001, "***", "**"), "*"), " ")) %>%arrange(factor(outcome, levels = (names(b5_vars)))), # order by BFI traits, digits =3)
outcome
term
est
std_err
p
sig
extraversion
Intercept
2.951
0.041
0.000
***
extraversion
time
0.032
0.025
0.217
extraversion
group
-0.050
0.058
0.389
extraversion
time*group
-0.017
0.036
0.625
agreeableness
Intercept
3.697
0.035
0.000
***
agreeableness
time
0.015
0.022
0.486
agreeableness
group
-0.011
0.050
0.822
agreeableness
time*group
-0.019
0.031
0.531
conscientiousness
Intercept
3.468
0.045
0.000
***
conscientiousness
time
0.072
0.028
0.009
**
conscientiousness
group
0.067
0.064
0.296
conscientiousness
time*group
-0.060
0.039
0.121
neuroticism
Intercept
3.068
0.049
0.000
***
neuroticism
time
-0.062
0.028
0.030
*
neuroticism
group
-0.015
0.069
0.829
neuroticism
time*group
0.017
0.040
0.674
openness
Intercept
3.792
0.039
0.000
***
openness
time
-0.001
0.022
0.969
openness
group
-0.038
0.054
0.484
openness
time*group
0.016
0.031
0.619
sociability
Intercept
2.641
0.057
0.000
***
sociability
time
0.046
0.036
0.202
sociability
group
-0.092
0.080
0.254
sociability
time*group
0.006
0.050
0.902
assertiveness
Intercept
2.984
0.051
0.000
***
assertiveness
time
0.039
0.036
0.281
assertiveness
group
-0.050
0.072
0.484
assertiveness
time*group
-0.023
0.050
0.648
energy
Intercept
3.228
0.048
0.000
***
energy
time
0.011
0.040
0.781
energy
group
-0.008
0.068
0.905
energy
time*group
-0.034
0.056
0.535
compassion
Intercept
3.814
0.044
0.000
***
compassion
time
0.040
0.037
0.277
compassion
group
0.000
0.062
1.000
compassion
time*group
-0.053
0.052
0.301
respectfulness
Intercept
4.067
0.041
0.000
***
respectfulness
time
0.025
0.029
0.394
respectfulness
group
-0.017
0.058
0.772
respectfulness
time*group
-0.011
0.041
0.791
trust
Intercept
3.211
0.048
0.000
***
trust
time
-0.018
0.035
0.603
trust
group
-0.019
0.068
0.780
trust
time*group
0.010
0.048
0.834
organization
Intercept
3.520
0.056
0.000
***
organization
time
0.077
0.037
0.038
*
organization
group
0.153
0.079
0.053
organization
time*group
-0.027
0.052
0.607
productiveness
Intercept
3.297
0.054
0.000
***
productiveness
time
0.077
0.037
0.039
*
productiveness
group
0.064
0.076
0.402
productiveness
time*group
-0.091
0.052
0.080
responsibility
Intercept
3.586
0.049
0.000
***
responsibility
time
0.064
0.040
0.113
responsibility
group
-0.018
0.068
0.797
responsibility
time*group
-0.060
0.056
0.289
anxiety
Intercept
3.396
0.053
0.000
***
anxiety
time
-0.035
0.038
0.355
anxiety
group
0.047
0.075
0.534
anxiety
time*group
-0.036
0.053
0.498
depression
Intercept
2.922
0.058
0.000
***
depression
time
-0.076
0.039
0.052
depression
group
-0.013
0.081
0.876
depression
time*group
0.004
0.054
0.941
volatility
Intercept
2.886
0.056
0.000
***
volatility
time
-0.070
0.038
0.069
volatility
group
-0.078
0.078
0.322
volatility
time*group
0.072
0.054
0.181
curiosity
Intercept
3.865
0.046
0.000
***
curiosity
time
0.029
0.033
0.374
curiosity
group
-0.015
0.064
0.811
curiosity
time*group
-0.048
0.046
0.300
aesthetic
Intercept
3.724
0.051
0.000
***
aesthetic
time
-0.025
0.035
0.486
aesthetic
group
-0.060
0.072
0.401
aesthetic
time*group
0.031
0.050
0.534
imagination
Intercept
3.786
0.047
0.000
***
imagination
time
-0.007
0.034
0.834
imagination
group
-0.037
0.065
0.575
imagination
time*group
0.065
0.048
0.177
No further changes from T2 to T3 that are significant at p < .001 (independent of intervention group membership). Suggestive increase in conscientiousness.
Generate word clouds based on the content from the free-form change descriptions written after the intervention at T2 and T3 (same question asked at both time points).
For data protection reasons, we don’t provide the free-form change descriptions on the OSF. Therefore, the following code chunks are not run (eval: false). We do, however, provide an even more extensive overview of these open-response variables including word clouds in the separate document textmining.html.
Prepare data, separately for each intervention group
Show the code
# see tutorial here: https://towardsdatascience.com/create-a-word-cloud-with-r-bde3e7422e8a# self-improvement group# Create a vector containing only the texttext_sb <- df_sbsa2 %>%filter(!is.na(sb14_01) & rando!="Waitlist-Control") %>%pull(sb14_01)text_sb <-gsub("[\r\n]", " ", text_sb)# Create a corpus docs_sb <- tm::VCorpus(tm::VectorSource(text_sb))# cleaning the textdocs_sb <- docs_sb %>%tm_map(removeNumbers) %>%tm_map(removePunctuation) %>%tm_map(stripWhitespace)docs_sb <-tm_map(docs_sb, content_transformer(tolower))docs_sb <-tm_map(docs_sb, removeWords, stopwords("english"))# Create a document-term-matrixdtm_sb <-TermDocumentMatrix(docs_sb) matrix_sb <-as.matrix(dtm_sb) words_sb <-sort(rowSums(matrix_sb), decreasing=TRUE) df_words_sb <-data.frame(word =names(words_sb), freq=words_sb)# remove a few of the frequent "non-words"df_words_sb <- df_words_sb %>%as_tibble() %>%filter(!word %in%c("ive", "didnt", "cant", "dont"))# self-acceptance group# Create a vector containing only the texttext_sa <- df_sbsa2 %>%filter(!is.na(sa13_01) & rando!="Waitlist-Control") %>%pull(sa13_01)text_sa <-gsub("[\r\n]", " ", text_sa)# Create a corpus docs_sa <- tm::VCorpus(tm::VectorSource(text_sa))# cleaning the textdocs_sa <- docs_sa %>%tm_map(removeNumbers) %>%tm_map(removePunctuation) %>%tm_map(stripWhitespace)docs_sa <-tm_map(docs_sa, content_transformer(tolower))docs_sa <-tm_map(docs_sa, removeWords, stopwords("english"))# Create a document-term-matrixdtm_sa <-TermDocumentMatrix(docs_sa) matrix_sa <-as.matrix(dtm_sa) words_sa <-sort(rowSums(matrix_sa), decreasing=TRUE) df_words_sa <-data.frame(word =names(words_sa), freq=words_sa)# remove a few of the frequent "non-words"df_words_sa <- df_words_sa %>%as_tibble() %>%filter(!word %in%c("ive", "didnt", "cant", "dont"))
Generate the word cloud: for self-improvement group
Generate word clouds based on the content of the three diaries written between T1 and T2. I only focus on the two intervention groups here (not on the CG between T2 and T3).
For data protection reasons, we don’t provide the diary entries on the OSF. Therefore, the following code chunks are not run (eval: false). We do, however, provide an even more extensive overview of all open-response variables including word clouds of the diaries in the separate document textmining.html.
Read in the data and see how many people filled out the diaries (optional but still compensated)
Show the code
path_diar1_sb <-"data/diaries/sb_1/data_PersonalityChange_2024-03-22_14-37.xlsx"path_diar2_sb <-"data/diaries/sb_2/data_PersonalityChange_2024-03-22_16-19.xlsx"path_diar3_sb <-"data/diaries/sb_3/data_PersonalityChange_2024-03-22_16-22.xlsx"path_diar1_sa <-"data/diaries/sa_1/data_PersonalityChange_2024-03-22_16-18.xlsx"path_diar2_sa <-"data/diaries/sa_2/data_PersonalityChange_2024-03-22_16-20.xlsx"path_diar3_sa <-"data/diaries/sa_3/data_PersonalityChange_2024-03-22_16-22.xlsx"# T1diar1_sb <- readxl::read_excel(path_diar1_sb, col_names = F, skip =2, guess_max =10000)var_names1_sb <- readxl::read_excel(path_diar1_sb, col_names = F)[c(1,2), ]var_names1_sb <-data.frame(t(var_names1_sb))colnames(diar1_sb) <- stringr::str_to_lower(var_names1_sb$X1) # only lower case pls# label data diar1_sb <- labelled::set_variable_labels(diar1_sb, .labels = var_names1_sb$X2)diar1_sb <- diar1_sb %>%filter(dm01_01!="Test"&!is.na(sb15_01)) %>%select(dm01_01, sb15_01)diar1_sa <- readxl::read_excel(path_diar1_sa, col_names = F, skip =2, guess_max =10000)var_names1_sa <- readxl::read_excel(path_diar1_sa, col_names = F)[c(1,2), ]var_names1_sa <-data.frame(t(var_names1_sa))colnames(diar1_sa) <- stringr::str_to_lower(var_names1_sa$X1) # only lower case pls# label data diar1_sa <- labelled::set_variable_labels(diar1_sa, .labels = var_names1_sa$X2)diar1_sa <- diar1_sa %>%filter(dm01_01!="Test"&!is.na(sa15_01)) %>%select(dm01_01, sa15_01)# T2diar2_sb <- readxl::read_excel(path_diar2_sb, col_names = F, skip =2, guess_max =10000)var_names2_sb <- readxl::read_excel(path_diar2_sb, col_names = F)[c(1,2), ]var_names2_sb <-data.frame(t(var_names2_sb))colnames(diar2_sb) <- stringr::str_to_lower(var_names2_sb$X1) # only lower case pls# label data diar2_sb <- labelled::set_variable_labels(diar2_sb, .labels = var_names2_sb$X2)diar2_sb <- diar2_sb %>%filter(dm01_01!="Test"&!is.na(sb15_01)) %>%select(dm01_01, sb15_01)diar2_sa <- readxl::read_excel(path_diar2_sa, col_names = F, skip =2, guess_max =10000)var_names2_sa <- readxl::read_excel(path_diar2_sa, col_names = F)[c(1,2), ]var_names2_sa <-data.frame(t(var_names2_sa))colnames(diar2_sa) <- stringr::str_to_lower(var_names2_sa$X1) # only lower case pls# label data diar2_sa <- labelled::set_variable_labels(diar2_sa, .labels = var_names2_sa$X2)diar2_sa <- diar2_sa %>%filter(dm01_01!="Test"&!is.na(sa15_01)) %>%select(dm01_01, sa15_01)# T3diar3_sb <- readxl::read_excel(path_diar3_sb, col_names = F, skip =2, guess_max =10000)var_names3_sb <- readxl::read_excel(path_diar3_sb, col_names = F)[c(1,2), ]var_names3_sb <-data.frame(t(var_names3_sb))colnames(diar3_sb) <- stringr::str_to_lower(var_names3_sb$X1) # only lower case pls# label data diar3_sb <- labelled::set_variable_labels(diar3_sb, .labels = var_names3_sb$X2)diar3_sb <- diar3_sb %>%filter(dm01_01!="Test"&!is.na(sb15_01)) %>%select(dm01_01, sb15_01)diar3_sa <- readxl::read_excel(path_diar3_sa, col_names = F, skip =2, guess_max =10000)var_names3_sa <- readxl::read_excel(path_diar3_sa, col_names = F)[c(1,2), ]var_names3_sa <-data.frame(t(var_names3_sa))colnames(diar3_sa) <- stringr::str_to_lower(var_names3_sa$X1) # only lower case pls# label data diar3_sa <- labelled::set_variable_labels(diar3_sa, .labels = var_names3_sa$X2)diar3_sa <- diar3_sa %>%filter(dm01_01!="Test"&!is.na(sa15_01)) %>%select(dm01_01, sa15_01)# appending together all three diaries in each groupdiaries_sb <-bind_rows(diar1_sb, diar2_sb, diar3_sb)diaries_sa <-bind_rows(diar1_sa, diar2_sa, diar3_sa)# filter out one case where it was obvious that they used a LLMdiaries_sb <- diaries_sb %>%filter(!str_detect(sb15_01, "language model"))
Does age moderate the extent to which participants in the intervention changed over time?
7.7.1 Descriptives: Age & change goals
Some descriptives first:
# without the control group to make this similar to Study 1df_sbsa2_age <- df_sbsa2 %>%filter(rando !="Waitlist-Control")summary(df_sbsa2_age$age)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
18.00 24.00 28.00 30.62 35.00 69.00 3
Correlation age & general improvement goal
cor.test(df_sbsa2_age$age, df_sbsa2_age$sb06_01)
Pearson's product-moment correlation
data: df_sbsa2_age$age and df_sbsa2_age$sb06_01
t = -0.66655, df = 335, p-value = 0.5055
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.14267388 0.07071672
sample estimates:
cor
-0.03639342
Correlation not significant.
Frequency of self-improvement behaviors
- (1) I thought about the ways I would like to change
- (2) I sought out environments that would help me be the kind of person I want to be
- (3) I practiced new habits to achieve my change goals
Negative correlations for conscientiousness facets.
Correlation age & general acceptance goal
cor.test(df_sbsa2_age$age, df_sbsa2_age$sa06_01)
Pearson's product-moment correlation
data: df_sbsa2_age$age and df_sbsa2_age$sa06_01
t = -3.2181, df = 333, p-value = 0.001417
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.27569323 -0.06777694
sample estimates:
cor
-0.1736697
Significant negative correlation.
Frequency of self-acceptance behaviors
- (1) I thought about how I could be less judgmental and more self-affirming
- (2) I sought out environments that would help me accept who I am
- (3) I practiced new self-acceptance habits to affirm who I am
Adapt latent change score model from above (adding moderation by age) and add grouping factor in estimation (adding vectorized equality constraints to the model step by step):
Show the code
# create templates:# configural invariancetrait_template_age_config <-'trait_t1 =~ 1*ind01_t1 + c("lamb2a", "lamb2b")*ind02_t1 + c("lamb3a", "lamb3b")*ind03_t1 # This specifies the measurement model for trait_t1 trait_t2 =~ 1*ind01_t2 + c("lamb2a", "lamb2b")*ind02_t2 + c("lamb3a", "lamb3b")*ind03_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadingstrait_t2 ~ 1*trait_t1 # This parameter regresses trait_t2 perfectly on trait_t1d_trait_1 =~ 1*trait_t2 # This defines the latent change score factor as measured perfectly by scores on trait_t2trait_t2 ~ 0*1 # This line constrains the intercept of trait_t2 to 0trait_t2 ~~ 0*trait_t2 # This fixes the variance of trait_t2 to 0d_trait_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score trait_t1 ~ c("b5_int_a", "b5_int_b")*1 # This estimates the intercept of trait_t1 d_trait_1 ~~ c("d_var_a", "d_var_b")*d_trait_1 # This estimates the variance of the change scores trait_t1 ~~ c("b5_var_a", "b5_var_b")*trait_t1 # This estimates the variance of trait_t1 d_trait_1 ~~ c("fb_a", "fb_b")* trait_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change scoretrait_t1 ~ c("main_a", "main_b")*age_z # This estimates the moderation effect on personality at T1d_trait_1 ~ c("mod_a", "mod_b")*age_z # This estimates the moderation effect on the change scoreage_z ~ 0*1 # This fixes the intercept of the moderator to 0age_z ~~ c("varmod_a", "varmod_b")*age_z # This estimates the variance of the moderatorind01_t1 ~~ c("cov1a", "cov1b")*ind01_t2 # This allows residual covariance on indicator X1 across T1 and T2ind02_t1 ~~ c("cov2a", "cov2b")*ind02_t2 # This allows residual covariance on indicator X2 across T1 and T2ind03_t1 ~~ c("cov3a", "cov3b")*ind03_t2 # This allows residual covariance on indicator X3 across T1 and T2ind01_t1 ~~ c("res1a", "res1b")*ind01_t1 # This allows residual variance on indicator X1 at T1 ind02_t1 ~~ c("res2a", "res2b")*ind02_t1 # This allows residual variance on indicator X2 at T1ind03_t1 ~~ c("res3a", "res3b")*ind03_t1 # This allows residual variance on indicator X3 at T1ind01_t2 ~~ c("res1a", "res1b")*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ c("res2a", "res2b")*ind02_t2 # This allows residual variance on indicator X2 at T2 ind03_t2 ~~ c("res3a", "res3b")*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind02_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1ind03_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2ind03_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'# weak invariancetrait_template_age_weak <-'trait_t1 =~ 1*ind01_t1 + c("lamb2", "lamb2")*ind02_t1 + c("lamb3", "lamb3")*ind03_t1 # This specifies the measurement model for trait_t1 trait_t2 =~ 1*ind01_t2 + c("lamb2", "lamb2")*ind02_t2 + c("lamb3", "lamb3")*ind03_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadingstrait_t2 ~ 1*trait_t1 # This parameter regresses trait_t2 perfectly on trait_t1d_trait_1 =~ 1*trait_t2 # This defines the latent change score factor as measured perfectly by scores on trait_t2trait_t2 ~ 0*1 # This line constrains the intercept of trait_t2 to 0trait_t2 ~~ 0*trait_t2 # This fixes the variance of trait_t2 to 0d_trait_1 ~ c("d_int_a", "d_int_b")*1 # This estimates the intercept of the change score trait_t1 ~ c("b5_int_a", "b5_int_b")*1 # This estimates the intercept of trait_t1 d_trait_1 ~~ c("d_var_a", "d_var_b")*d_trait_1 # This estimates the variance of the change scores trait_t1 ~~ c("b5_var_a", "b5_var_b")*trait_t1 # This estimates the variance of trait_t1 d_trait_1 ~~ c("fb_a", "fb_b")* trait_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change scoretrait_t1 ~ c("main_a", "main_b")*age_z # This estimates the moderation effect on personality at T1d_trait_1 ~ c("mod_a", "mod_b")*age_z # This estimates the moderation effect on the change scoreage_z ~ 0*1 # This fixes the intercept of the moderator to 0age_z ~~ c("varmod_a", "varmod_b")*age_z # This estimates the variance of the moderatorind01_t1 ~~ c("cov1a", "cov1b")*ind01_t2 # This allows residual covariance on indicator X1 across T1 and T2ind02_t1 ~~ c("cov2a", "cov2b")*ind02_t2 # This allows residual covariance on indicator X2 across T1 and T2ind03_t1 ~~ c("cov3a", "cov3b")*ind03_t2 # This allows residual covariance on indicator X3 across T1 and T2ind01_t1 ~~ c("res1a", "res1b")*ind01_t1 # This allows residual variance on indicator X1 at T1 ind02_t1 ~~ c("res2a", "res2b")*ind02_t1 # This allows residual variance on indicator X2 at T1ind03_t1 ~~ c("res3a", "res3b")*ind03_t1 # This allows residual variance on indicator X3 at T1ind01_t2 ~~ c("res1a", "res1b")*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ c("res2a", "res2b")*ind02_t2 # This allows residual variance on indicator X2 at T2 ind03_t2 ~~ c("res3a", "res3b")*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind02_t1 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T1ind03_t1 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T1ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ c("m2a", "m2b")*1 # This estimates the intercept of X2 at T2ind03_t2 ~ c("m3a", "m3b")*1 # This estimates the intercept of X3 at T2'# strong invariancetrait_template_age_strong <-'trait_t1 =~ 1*ind01_t1 + c("lamb2", "lamb2")*ind02_t1 + c("lamb3", "lamb3")*ind03_t1 # This specifies the measurement model for trait_t1 trait_t2 =~ 1*ind01_t2 + c("lamb2", "lamb2")*ind02_t2 + c("lamb3", "lamb3")*ind03_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadingstrait_t2 ~ 1*trait_t1 # This parameter regresses trait_t2 perfectly on trait_t1d_trait_1 =~ 1*trait_t2 # This defines the latent change score factor as measured perfectly by scores on trait_t2trait_t2 ~ 0*1 # This line constrains the intercept of trait_t2 to 0trait_t2 ~~ 0*trait_t2 # This fixes the variance of trait_t2 to 0d_trait_1 ~ c("d_int", "d_int")*1 # This estimates the intercept of the change score trait_t1 ~ c("b5_int", "b5_int")*1 # This estimates the intercept of trait_t1 d_trait_1 ~~ c("d_var_a", "d_var_b")*d_trait_1 # This estimates the variance of the change scores trait_t1 ~~ c("b5_var_a", "b5_var_b")*trait_t1 # This estimates the variance of trait_t1 d_trait_1 ~~ c("fb_a", "fb_b")* trait_t1 # This estimates the self-feedback parameter, as a covariance! -> therefore, the interpretation of the change scoretrait_t1 ~ c("main", "main")*age_z # This estimates the moderation effect on personality at T1d_trait_1 ~ c("mod", "mod")*age_z # This estimates the moderation effect on the change scoreage_z ~ 0*1 # This fixes the intercept of the moderator to 0age_z ~~ c("varmod_a", "varmod_b")*age_z # This estimates the variance of the moderatorind01_t1 ~~ c("cov1a", "cov1b")*ind01_t2 # This allows residual covariance on indicator X1 across T1 and T2ind02_t1 ~~ c("cov2a", "cov2b")*ind02_t2 # This allows residual covariance on indicator X2 across T1 and T2ind03_t1 ~~ c("cov3a", "cov3b")*ind03_t2 # This allows residual covariance on indicator X3 across T1 and T2ind01_t1 ~~ c("res1a", "res1b")*ind01_t1 # This allows residual variance on indicator X1 at T1 ind02_t1 ~~ c("res2a", "res2b")*ind02_t1 # This allows residual variance on indicator X2 at T1ind03_t1 ~~ c("res3a", "res3b")*ind03_t1 # This allows residual variance on indicator X3 at T1ind01_t2 ~~ c("res1a", "res1b")*ind01_t2 # This allows residual variance on indicator X1 at T2 ind02_t2 ~~ c("res2a", "res2b")*ind02_t2 # This allows residual variance on indicator X2 at T2 ind03_t2 ~~ c("res3a", "res3b")*ind03_t2 # This allows residual variance on indicator X3 at T2ind01_t1 ~ 0*1 # This constrains the intercept of X1 to 0 at T1ind02_t1 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T1ind03_t1 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T1ind01_t2 ~ 0*1 # This constrains the intercept of X1 to 0 at T2ind02_t2 ~ c("m2", "m2")*1 # This estimates the intercept of X2 at T2ind03_t2 ~ c("m3", "m3")*1 # This estimates the intercept of X3 at T2'# strict invariance -> not really needed for this analysis# loop across 5 traitsfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# configural - current template_filled_config_current <-str_replace_all(trait_template_age_config, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_age_fit_config_current <-lavaan(template_filled_config_current, data = df_sbsa2_wide_pers_mod_age, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando")eval(call("<-", as.name(paste0("lcs_", short_name, "_age_config_current")), template_filled_config_current))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_age_config_current")), trait_age_fit_config_current))# configural - ideal template_filled_config_ideal <-str_replace_all(trait_template_age_config, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_age_fit_config_ideal <-lavaan(template_filled_config_ideal, data = df_sbsa2_wide_pers_mod_age, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando")eval(call("<-", as.name(paste0("lcs_", short_name, "_age_config_ideal")), template_filled_config_ideal))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_age_config_ideal")), trait_age_fit_config_ideal))# weak - current template_filled_weak_current <-str_replace_all(trait_template_age_weak, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_age_fit_weak_current <-lavaan(template_filled_weak_current, data = df_sbsa2_wide_pers_mod_age, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal ="loadings")eval(call("<-", as.name(paste0("lcs_", short_name, "_age_weak_current")), template_filled_weak_current))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_age_weak_current")), trait_age_fit_weak_current))# weak - ideal template_filled_weak_ideal <-str_replace_all(trait_template_age_weak, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_age_fit_weak_ideal <-lavaan(template_filled_weak_ideal, data = df_sbsa2_wide_pers_mod_age, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal ="loadings")eval(call("<-", as.name(paste0("lcs_", short_name, "_age_weak_ideal")), template_filled_weak_ideal))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_age_weak_ideal")), trait_age_fit_weak_ideal))# strong - current template_filled_strong_current <-str_replace_all(trait_template_age_strong, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_age_fit_strong_current <-lavaan(template_filled_strong_current, data = df_sbsa2_wide_pers_mod_age, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal =c("intercepts", "loadings"))eval(call("<-", as.name(paste0("lcs_", short_name, "_age_strong_current")), template_filled_strong_current))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_age_strong_current")), trait_age_fit_strong_current))# strong - ideal template_filled_strong_ideal <-str_replace_all(trait_template_age_strong, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_age_fit_strong_ideal <-lavaan(template_filled_strong_ideal, data = df_sbsa2_wide_pers_mod_age, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="rando", group.equal =c("intercepts", "loadings"))eval(call("<-", as.name(paste0("lcs_", short_name, "_age_strong_ideal")), template_filled_strong_ideal))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_age_strong_ideal")), trait_age_fit_strong_ideal))}
7.7.2.2 Current personality personality traits
Extraversion (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_extra_age_config_current, fit_lcs_extra_age_weak_current, fit_lcs_extra_age_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_extra_age_config_current 34 9057.7 9220.2 59.606
fit_lcs_extra_age_weak_current 36 9054.2 9207.7 60.144 0.5132 2
fit_lcs_extra_age_strong_current 42 9045.2 9171.5 63.069 2.9290 6
Pr(>Chisq)
fit_lcs_extra_age_config_current
fit_lcs_extra_age_weak_current 0.7737
fit_lcs_extra_age_strong_current 0.8177
# show model with varying latent change parameters # -> change parameter is "d_extra_1 ~1"# -> main effect of age on T1 trait is "extra_t1 ~ age_z"# -> moderation effect of age on change parameter is "d_extra_1 ~ age_z"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_age_lcs_extra_current <- broom::tidy(fit_lcs_extra_age_weak_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ", "extra_t1 ~ age_z", "d_extra_1 ~ age_z")) %>%arrange(label)kable(params_age_lcs_extra_current, digits =3)
term
label
estimate
std.all
statistic
p.value
d_extra_1 ~1
d_int_a
0.092
0.349
4.114
0.000
d_extra_1 ~1
d_int_b
0.090
0.320
3.648
0.000
extra_t1 ~ age_z
main_a
0.024
0.039
0.668
0.504
extra_t1 ~ age_z
main_b
0.044
0.078
1.199
0.231
d_extra_1 ~ age_z
mod_a
-0.044
-0.162
-1.853
0.064
d_extra_1 ~ age_z
mod_b
-0.023
-0.083
-1.225
0.220
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_extra_age_strong_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ", "extra_t1 ~ age_z", "d_extra_1 ~ age_z")) %>%arrange(label), digits =3)
Slightly significant (at p < .05) moderation effect by age for extraversion but only in the constrained model. With older age, participants changed less in current-personality extraversion. No significant differences between intervention groups according to the LRTs.
Agreeableness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_agree_age_config_current, fit_lcs_agree_age_weak_current, fit_lcs_agree_age_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_agree_age_config_current 34 7723.6 7886.1 29.232
fit_lcs_agree_age_weak_current 36 7720.7 7874.1 30.290 0.95091 2
fit_lcs_agree_age_strong_current 42 7710.8 7837.2 32.432 2.19265 6
Pr(>Chisq)
fit_lcs_agree_age_config_current
fit_lcs_agree_age_weak_current 0.6216
fit_lcs_agree_age_strong_current 0.9012
# show model with varying latent change parameters # -> change parameter is "d_agree_1 ~1"# -> main effect of age on T1 trait is "agree_t1 ~ age_z"# -> moderation effect of age on change parameter is "d_agree_1 ~ age_z"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_age_lcs_agree_current <- broom::tidy(fit_lcs_agree_age_weak_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ", "agree_t1 ~ age_z", "d_agree_1 ~ age_z")) %>%arrange(label)kable(params_age_lcs_agree_current, digits =3)
term
label
estimate
std.all
statistic
p.value
d_agree_1 ~1
d_int_a
0.025
0.125
1.442
0.149
d_agree_1 ~1
d_int_b
0.019
0.096
1.107
0.268
agree_t1 ~ age_z
main_a
0.080
0.205
3.589
0.000
agree_t1 ~ age_z
main_b
0.045
0.119
2.024
0.043
d_agree_1 ~ age_z
mod_a
-0.004
-0.017
-0.219
0.827
d_agree_1 ~ age_z
mod_b
0.004
0.021
0.292
0.770
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_agree_age_strong_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ", "agree_t1 ~ age_z", "d_agree_1 ~ age_z")) %>%arrange(label), digits =3)
No significant moderation by age for agreeableness (similar in both groups). However, slight “main effect” of age on agreeableness at T1. No significant differences between intervention groups according to the LRTs.
Conscientiousness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_consc_age_config_current, fit_lcs_consc_age_weak_current, fit_lcs_consc_age_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_consc_age_config_current 34 8206.4 8368.9 33.484
fit_lcs_consc_age_weak_current 36 8206.0 8359.4 37.061 3.8502 2
fit_lcs_consc_age_strong_current 42 8201.3 8327.7 44.392 7.2854 6
Pr(>Chisq)
fit_lcs_consc_age_config_current
fit_lcs_consc_age_weak_current 0.1459
fit_lcs_consc_age_strong_current 0.2953
# show model with varying latent change parameters # -> change parameter is "d_consc_1 ~1"# -> main effect of age on T1 trait is "consc_t1 ~ age_z"# -> moderation effect of age on change parameter is "d_consc_1 ~ age_z"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_age_lcs_consc_current <- broom::tidy(fit_lcs_consc_age_weak_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ", "consc_t1 ~ age_z", "d_consc_1 ~ age_z")) %>%arrange(label)kable(params_age_lcs_consc_current, digits =3)
term
label
estimate
std.all
statistic
p.value
d_consc_1 ~1
d_int_a
0.075
0.209
2.817
0.005
d_consc_1 ~1
d_int_b
0.100
0.249
3.566
0.000
consc_t1 ~ age_z
main_a
0.194
0.272
4.918
0.000
consc_t1 ~ age_z
main_b
0.186
0.256
3.931
0.000
d_consc_1 ~ age_z
mod_a
-0.004
-0.011
-0.175
0.861
d_consc_1 ~ age_z
mod_b
-0.032
-0.082
-1.357
0.175
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_consc_age_strong_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ", "consc_t1 ~ age_z", "d_consc_1 ~ age_z")) %>%arrange(label), digits =3)
No significant moderation by age for conscientiousness (similar in both groups). Main effect of age on conscientiousness at T1. No significant differences according to the LRTs.
Neuroticism (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_neuro_age_config_current, fit_lcs_neuro_age_weak_current, fit_lcs_neuro_age_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_neuro_age_config_current 34 8687.2 8849.7 35.936
fit_lcs_neuro_age_weak_current 36 8684.2 8837.7 36.955 1.1455 2
fit_lcs_neuro_age_strong_current 42 8675.2 8801.6 39.988 3.0486 6
Pr(>Chisq)
fit_lcs_neuro_age_config_current
fit_lcs_neuro_age_weak_current 0.5640
fit_lcs_neuro_age_strong_current 0.8027
# show model with varying latent change parameters # -> change parameter is "d_neuro_1 ~1"# -> main effect of age on T1 trait is "neuro_t1 ~ age_z"# -> moderation effect of age on change parameter is "d_neuro_1 ~ age_z"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_age_lcs_neuro_current <- broom::tidy(fit_lcs_neuro_age_weak_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ", "neuro_t1 ~ age_z", "d_neuro_1 ~ age_z")) %>%arrange(label)kable(params_age_lcs_neuro_current, digits =3)
term
label
estimate
std.all
statistic
p.value
d_neuro_1 ~1
d_int_a
-0.178
-0.475
-6.367
0.000
d_neuro_1 ~1
d_int_b
-0.179
-0.390
-5.612
0.000
neuro_t1 ~ age_z
main_a
-0.082
-0.099
-1.710
0.087
neuro_t1 ~ age_z
main_b
-0.092
-0.112
-1.815
0.069
d_neuro_1 ~ age_z
mod_a
0.031
0.079
1.129
0.259
d_neuro_1 ~ age_z
mod_b
-0.005
-0.012
-0.188
0.851
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_neuro_age_strong_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ", "neuro_t1 ~ age_z", "d_neuro_1 ~ age_z")) %>%arrange(label), digits =3)
No significant moderation by age for neuroticism in both groups. Slight main effect of age on neuroticism at T1. No significant differences according to the LRTs.
Openness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_openn_age_config_current, fit_lcs_openn_age_weak_current, fit_lcs_openn_age_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_openn_age_config_current 34 8105.0 8267.5 35.171
fit_lcs_openn_age_weak_current 36 8108.4 8261.8 42.516 6.820 2
fit_lcs_openn_age_strong_current 42 8107.7 8234.1 53.853 11.283 6
Pr(>Chisq)
fit_lcs_openn_age_config_current
fit_lcs_openn_age_weak_current 0.03304 *
fit_lcs_openn_age_strong_current 0.08003 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> change parameter is "d_openn_1 ~1"# -> main effect of age on T1 trait is "openn_t1 ~ age_z"# -> moderation effect of age on change parameter is "d_openn_1 ~ age_z"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_age_lcs_openn_current <- broom::tidy(fit_lcs_openn_age_weak_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ", "openn_t1 ~ age_z", "d_openn_1 ~ age_z")) %>%arrange(label)kable(params_age_lcs_openn_current, digits =3)
term
label
estimate
std.all
statistic
p.value
d_openn_1 ~1
d_int_a
0.076
0.312
3.376
0.001
d_openn_1 ~1
d_int_b
0.075
0.288
3.199
0.001
openn_t1 ~ age_z
main_a
0.012
0.020
0.303
0.762
openn_t1 ~ age_z
main_b
0.029
0.052
0.756
0.450
d_openn_1 ~ age_z
mod_a
0.015
0.058
0.784
0.433
d_openn_1 ~ age_z
mod_b
-0.045
-0.175
-2.213
0.027
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_openn_age_strong_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ", "openn_t1 ~ age_z", "d_openn_1 ~ age_z")) %>%arrange(label), digits =3)
Very slight (but significant at p < .05) moderation by age for current-personality openness in the self-improvement group only. No significant differences according to the LRTs, though. No main effects of age.
7.7.2.3 Ideal personality personality traits
Extraversion (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_extra_age_config_ideal, fit_lcs_extra_age_weak_ideal, fit_lcs_extra_age_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_extra_age_config_ideal 34 8029.1 8191.6 49.280
fit_lcs_extra_age_weak_ideal 36 8026.8 8180.2 50.964 1.4060 2
fit_lcs_extra_age_strong_ideal 42 8016.3 8142.7 52.524 1.5598 6
Pr(>Chisq)
fit_lcs_extra_age_config_ideal
fit_lcs_extra_age_weak_ideal 0.4951
fit_lcs_extra_age_strong_ideal 0.9554
# show model with varying latent change parameters # -> change parameter is "d_extra_1 ~1"# -> main effect of age on T1 trait is "extra_t1 ~ age_z"# -> moderation effect of age on change parameter is "d_extra_1 ~ age_z"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_age_lcs_extra_ideal <- broom::tidy(fit_lcs_extra_age_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ", "extra_t1 ~ age_z", "d_extra_1 ~ age_z")) %>%arrange(label)kable(params_age_lcs_extra_ideal, digits =3)
term
label
estimate
std.all
statistic
p.value
d_extra_1 ~1
d_int_a
-0.016
-0.063
-0.672
0.502
d_extra_1 ~1
d_int_b
-0.022
-0.089
-0.976
0.329
extra_t1 ~ age_z
main_a
0.003
0.008
0.142
0.887
extra_t1 ~ age_z
main_b
0.005
0.013
0.168
0.867
d_extra_1 ~ age_z
mod_a
-0.046
-0.183
-2.162
0.031
d_extra_1 ~ age_z
mod_b
-0.027
-0.112
-1.236
0.216
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_extra_age_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ", "extra_t1 ~ age_z", "d_extra_1 ~ age_z")) %>%arrange(label), digits =3)
Very slight (but significant at p < .05) moderation by age for ideal-personality extraversion in the self-acceptance group and in the constrained model. However, no significant differences according to the LRTs.
Agreeableness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_agree_age_config_ideal, fit_lcs_agree_age_weak_ideal, fit_lcs_agree_age_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_agree_age_config_ideal 34 7711.3 7873.8 43.810
fit_lcs_agree_age_weak_ideal 36 7707.8 7861.2 44.254 0.4518 2
fit_lcs_agree_age_strong_ideal 42 7699.2 7825.6 47.691 3.4628 6
Pr(>Chisq)
fit_lcs_agree_age_config_ideal
fit_lcs_agree_age_weak_ideal 0.7978
fit_lcs_agree_age_strong_ideal 0.7489
# show model with varying latent change parameters # -> change parameter is "d_agree_1 ~1"# -> main effect of age on T1 trait is "agree_t1 ~ age_z"# -> moderation effect of age on change parameter is "d_agree_1 ~ age_z"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_age_lcs_agree_ideal <- broom::tidy(fit_lcs_agree_age_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ", "agree_t1 ~ age_z", "d_agree_1 ~ age_z")) %>%arrange(label)kable(params_age_lcs_agree_ideal, digits =3)
term
label
estimate
std.all
statistic
p.value
d_agree_1 ~1
d_int_a
0.006
0.020
0.247
0.805
d_agree_1 ~1
d_int_b
-0.030
-0.113
-1.368
0.171
agree_t1 ~ age_z
main_a
0.064
0.135
2.404
0.016
agree_t1 ~ age_z
main_b
0.099
0.234
4.123
0.000
d_agree_1 ~ age_z
mod_a
0.019
0.066
0.863
0.388
d_agree_1 ~ age_z
mod_b
-0.005
-0.018
-0.208
0.836
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_agree_age_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ", "agree_t1 ~ age_z", "d_agree_1 ~ age_z")) %>%arrange(label), digits =3)
No significant moderation by age for ideal-personality agreeableness (similar in both groups). Main effect of age on agreeableness at T1. No significant group differences according to LRTs.
Conscientiousness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_consc_age_config_ideal, fit_lcs_consc_age_weak_ideal, fit_lcs_consc_age_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_consc_age_config_ideal 34 6930.6 7093.0 30.550
fit_lcs_consc_age_weak_ideal 36 6926.7 7080.2 30.698 0.12687 2
fit_lcs_consc_age_strong_ideal 42 6917.1 7043.5 33.109 2.50120 6
Pr(>Chisq)
fit_lcs_consc_age_config_ideal
fit_lcs_consc_age_weak_ideal 0.9385
fit_lcs_consc_age_strong_ideal 0.8683
# show model with varying latent change parameters # -> change parameter is "d_consc_1 ~1"# -> main effect of age on T1 trait is "consc_t1 ~ age_z"# -> moderation effect of age on change parameter is "d_consc_1 ~ age_z"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_age_lcs_consc_ideal <- broom::tidy(fit_lcs_consc_age_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ", "consc_t1 ~ age_z", "d_consc_1 ~ age_z")) %>%arrange(label)kable(params_age_lcs_consc_ideal, digits =3)
term
label
estimate
std.all
statistic
p.value
d_consc_1 ~1
d_int_a
0.026
0.085
1.142
0.254
d_consc_1 ~1
d_int_b
0.010
0.036
0.441
0.659
consc_t1 ~ age_z
main_a
0.027
0.059
1.046
0.296
consc_t1 ~ age_z
main_b
0.052
0.132
2.266
0.023
d_consc_1 ~ age_z
mod_a
0.001
0.004
0.057
0.954
d_consc_1 ~ age_z
mod_b
-0.001
-0.006
-0.071
0.943
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_consc_age_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ", "consc_t1 ~ age_z", "d_consc_1 ~ age_z")) %>%arrange(label), digits =3)
No significant moderation by age for ideal-personality conscientiousness (similar in both groups). No significant differences according to the LRTs.
Neuroticism (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_neuro_age_config_ideal, fit_lcs_neuro_age_weak_ideal, fit_lcs_neuro_age_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_neuro_age_config_ideal 34 7153.2 7315.7 34.914
fit_lcs_neuro_age_weak_ideal 36 7154.9 7308.4 40.614 4.4858 2
fit_lcs_neuro_age_strong_ideal 42 7145.5 7271.9 43.221 2.6711 6
Pr(>Chisq)
fit_lcs_neuro_age_config_ideal
fit_lcs_neuro_age_weak_ideal 0.1062
fit_lcs_neuro_age_strong_ideal 0.8489
# show model with varying latent change parameters # -> change parameter is "d_neuro_1 ~1"# -> main effect of age on T1 trait is "neuro_t1 ~ age_z"# -> moderation effect of age on change parameter is "d_neuro_1 ~ age_z"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_age_lcs_neuro_ideal <- broom::tidy(fit_lcs_neuro_age_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ", "neuro_t1 ~ age_z", "d_neuro_1 ~ age_z")) %>%arrange(label)kable(params_age_lcs_neuro_ideal, digits =3)
term
label
estimate
std.all
statistic
p.value
d_neuro_1 ~1
d_int_a
-0.003
-0.010
-0.125
0.900
d_neuro_1 ~1
d_int_b
0.045
0.119
1.606
0.108
neuro_t1 ~ age_z
main_a
-0.057
-0.107
-1.900
0.057
neuro_t1 ~ age_z
main_b
-0.085
-0.186
-3.379
0.001
d_neuro_1 ~ age_z
mod_a
0.031
0.090
1.158
0.247
d_neuro_1 ~ age_z
mod_b
0.046
0.127
1.752
0.080
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_neuro_age_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ", "neuro_t1 ~ age_z", "d_neuro_1 ~ age_z")) %>%arrange(label), digits =3)
Slight moderation effect (significant at p < .05) by age for ideal-personality neuroticism. Only significant in the constrained model. No significant group differences according to the LRTs.
Openness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_openn_age_config_ideal, fit_lcs_openn_age_weak_ideal, fit_lcs_openn_age_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_openn_age_config_ideal 34 7869.4 8031.9 64.935
fit_lcs_openn_age_weak_ideal 36 7866.0 8019.5 65.559 0.5366 2
fit_lcs_openn_age_strong_ideal 42 7859.6 7986.0 71.141 6.0840 6
Pr(>Chisq)
fit_lcs_openn_age_config_ideal
fit_lcs_openn_age_weak_ideal 0.7647
fit_lcs_openn_age_strong_ideal 0.4138
# show model with varying latent change parameters # -> change parameter is "d_openn_1 ~1"# -> main effect of age on T1 trait is "openn_t1 ~ age_z"# -> moderation effect of age on change parameter is "d_openn_1 ~ age_z"# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)params_age_lcs_openn_ideal <- broom::tidy(fit_lcs_openn_age_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ", "openn_t1 ~ age_z", "d_openn_1 ~ age_z")) %>%arrange(label)kable(params_age_lcs_openn_ideal, digits =3)
term
label
estimate
std.all
statistic
p.value
d_openn_1 ~1
d_int_a
0.015
0.072
0.933
0.351
d_openn_1 ~1
d_int_b
0.016
0.109
1.119
0.263
openn_t1 ~ age_z
main_a
-0.001
-0.004
-0.078
0.938
openn_t1 ~ age_z
main_b
0.032
0.110
1.904
0.057
d_openn_1 ~ age_z
mod_a
-0.007
-0.032
-0.498
0.619
d_openn_1 ~ age_z
mod_b
-0.017
-0.116
-1.357
0.175
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_openn_age_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ", "openn_t1 ~ age_z", "d_openn_1 ~ age_z")) %>%arrange(label), digits =3)
Very few significant moderation effects (at p < .05): extraversion (ideal - acceptance group), neuroticism (ideal - in constrained model), openness (current - improvement group). Overall, not consistent with Study 1 results.
Plus a few main effects of age (at T1) in either intervention group.
7.7.3 Moderation analysis: age group split
Now that we saw that the two intervention groups did not really differ in terms of linear moderation effects, let’s see whether perhaps across the whole sample we can find differences in two age groups (-> in multigroup SEM of latent change score).
Split age by age 30: roughly the sample mean and consistent with findings by Miller on age differences
# create templates: we can use the same templates as above just with different group composition (split by age_d variable)# loop across 5 traitsfor (i in1:5) { item_nrs = b5_vars[[i]][[1]] short_name =str_trunc(names(b5_vars)[i], 5, ellipsis ="")# configural - current template_filled_config_current <-str_replace_all(trait_template_main_config, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_agesplit_fit_config_current <-lavaan(template_filled_config_current, data = df_sbsa2_wide_pers_mod_age_split, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="age_d")eval(call("<-", as.name(paste0("lcs_", short_name, "_agesplit_config_current")), template_filled_config_current))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_agesplit_config_current")), trait_agesplit_fit_config_current))# configural - ideal template_filled_config_ideal <-str_replace_all(trait_template_main_config, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_agesplit_fit_config_ideal <-lavaan(template_filled_config_ideal, data = df_sbsa2_wide_pers_mod_age_split, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="age_d")eval(call("<-", as.name(paste0("lcs_", short_name, "_agesplit_config_ideal")), template_filled_config_ideal))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_agesplit_config_ideal")), trait_agesplit_fit_config_ideal))# weak - current template_filled_weak_current <-str_replace_all(trait_template_main_weak, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_agesplit_fit_weak_current <-lavaan(template_filled_weak_current, data = df_sbsa2_wide_pers_mod_age_split, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="age_d", group.equal ="loadings")eval(call("<-", as.name(paste0("lcs_", short_name, "_agesplit_weak_current")), template_filled_weak_current))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_agesplit_weak_current")), trait_agesplit_fit_weak_current))# weak - ideal template_filled_weak_ideal <-str_replace_all(trait_template_main_weak, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_agesplit_fit_weak_ideal <-lavaan(template_filled_weak_ideal, data = df_sbsa2_wide_pers_mod_age_split, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="age_d", group.equal ="loadings")eval(call("<-", as.name(paste0("lcs_", short_name, "_agesplit_weak_ideal")), template_filled_weak_ideal))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_agesplit_weak_ideal")), trait_agesplit_fit_weak_ideal))# strong - current template_filled_strong_current <-str_replace_all(trait_template_main_strong, c("trait"= short_name,"ind01"=paste0(short_name, "_curr_par1"), "ind02"=paste0(short_name, "_curr_par2"), "ind03"=paste0(short_name, "_curr_par3"))) trait_agesplit_fit_strong_current <-lavaan(template_filled_strong_current, data = df_sbsa2_wide_pers_mod_age_split, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="age_d", group.equal =c("intercepts", "loadings"))eval(call("<-", as.name(paste0("lcs_", short_name, "_agesplit_strong_current")), template_filled_strong_current))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_agesplit_strong_current")), trait_agesplit_fit_strong_current))# strong - ideal template_filled_strong_ideal <-str_replace_all(trait_template_main_strong, c("trait"= short_name,"ind01"=paste0(short_name, "_ideal_par1"), "ind02"=paste0(short_name, "_ideal_par2"), "ind03"=paste0(short_name, "_ideal_par3"))) trait_agesplit_fit_strong_ideal <-lavaan(template_filled_strong_ideal, data = df_sbsa2_wide_pers_mod_age_split, estimator='mlr', fixed.x=FALSE, missing='fiml', group ="age_d", group.equal =c("intercepts", "loadings"))eval(call("<-", as.name(paste0("lcs_", short_name, "_agesplit_strong_ideal")), template_filled_strong_ideal))eval(call("<-", as.name(paste0("fit_lcs_", short_name, "_agesplit_strong_ideal")), trait_agesplit_fit_strong_ideal))}
7.7.3.2 Current personality personality traits
Extraversion (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_extra_agesplit_config_current, fit_lcs_extra_agesplit_weak_current, fit_lcs_extra_agesplit_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_extra_agesplit_config_current 24 8920.2 9062.5 66.15
fit_lcs_extra_agesplit_weak_current 26 8924.0 9056.8 73.94 8.1090 2
fit_lcs_extra_agesplit_strong_current 30 8925.1 9038.9 83.07 9.2066 4
Pr(>Chisq)
fit_lcs_extra_agesplit_config_current
fit_lcs_extra_agesplit_weak_current 0.01734 *
fit_lcs_extra_agesplit_strong_current 0.05614 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_extra_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = old, b = young)params_agesplit_lcs_extra_current <- broom::tidy(fit_lcs_extra_agesplit_weak_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 "))kable(params_agesplit_lcs_extra_current, digits =3)
term
label
estimate
std.all
statistic
p.value
d_extra_1 ~1
d_int_a
0.045
0.190
2.131
0.033
d_extra_1 ~1
d_int_b
0.116
0.391
5.552
0.000
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_extra_agesplit_strong_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ")), digits =3)
Similar change in extraversion in both groups (somewhat stronger in younger group!). No significant differences in latent change score according to the LRTs (2nd test).
Agreeableness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_agree_agesplit_config_current, fit_lcs_agree_agesplit_weak_current, fit_lcs_agree_agesplit_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff
fit_lcs_agree_agesplit_config_current 24 7311.0 7453.3 22.194
fit_lcs_agree_agesplit_weak_current 26 7307.4 7440.2 22.622 0.4042
fit_lcs_agree_agesplit_strong_current 30 7322.1 7435.9 45.286 21.7115
Df diff Pr(>Chisq)
fit_lcs_agree_agesplit_config_current
fit_lcs_agree_agesplit_weak_current 2 0.8170272
fit_lcs_agree_agesplit_strong_current 4 0.0002287 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_agree_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = old, b = young)params_agesplit_lcs_agree_current <- broom::tidy(fit_lcs_agree_agesplit_weak_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 "))kable(params_agesplit_lcs_agree_current, digits =3)
term
label
estimate
std.all
statistic
p.value
d_agree_1 ~1
d_int_a
0.035
0.172
2.194
0.028
d_agree_1 ~1
d_int_b
0.026
0.142
1.806
0.071
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_agree_agesplit_strong_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ")), digits =3)
Very similar change in agreeableness in both groups. No significant differences according to the LRTs.
Conscientiousness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_consc_agesplit_config_current, fit_lcs_consc_agesplit_weak_current, fit_lcs_consc_agesplit_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff
fit_lcs_consc_agesplit_config_current 24 7855.1 7997.4 32.286
fit_lcs_consc_agesplit_weak_current 26 7852.2 7985.0 33.341 1.048
fit_lcs_consc_agesplit_strong_current 30 7878.8 7992.6 67.920 33.473
Df diff Pr(>Chisq)
fit_lcs_consc_agesplit_config_current
fit_lcs_consc_agesplit_weak_current 2 0.5923
fit_lcs_consc_agesplit_strong_current 4 9.559e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_consc_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = old, b = young)params_agesplit_lcs_consc_current <- broom::tidy(fit_lcs_consc_agesplit_weak_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 "))kable(params_agesplit_lcs_consc_current, digits =3)
term
label
estimate
std.all
statistic
p.value
d_consc_1 ~1
d_int_a
0.079
0.222
3.006
0.003
d_consc_1 ~1
d_int_b
0.100
0.251
4.344
0.000
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_consc_agesplit_strong_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ")), digits =3)
Similar change in conscientiousness in both groups (slightly stronger change in younger group). LRT indicates significant group differences in latent change score.
Neuroticism (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_neuro_agesplit_config_current, fit_lcs_neuro_agesplit_weak_current, fit_lcs_neuro_agesplit_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff
fit_lcs_neuro_agesplit_config_current 24 8465.5 8607.8 17.904
fit_lcs_neuro_agesplit_weak_current 26 8461.6 8594.4 17.972 0.0791
fit_lcs_neuro_agesplit_strong_current 30 8470.2 8584.0 34.624 16.7013
Df diff Pr(>Chisq)
fit_lcs_neuro_agesplit_config_current
fit_lcs_neuro_agesplit_weak_current 2 0.961231
fit_lcs_neuro_agesplit_strong_current 4 0.002209 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_neuro_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = old, b = young)params_agesplit_lcs_neuro_current <- broom::tidy(fit_lcs_neuro_agesplit_weak_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 "))kable(params_agesplit_lcs_neuro_current, digits =3)
term
label
estimate
std.all
statistic
p.value
d_neuro_1 ~1
d_int_a
-0.147
-0.348
-4.752
0
d_neuro_1 ~1
d_int_b
-0.179
-0.428
-7.436
0
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_neuro_agesplit_strong_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ")), digits =3)
Relatively similar change in neuroticism in both groups (slightly stronger change in younger group). LRT indicates significant group differences in latent change score.
Openness (current personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_openn_agesplit_config_current, fit_lcs_openn_agesplit_weak_current, fit_lcs_openn_agesplit_strong_current)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff
fit_lcs_openn_agesplit_config_current 24 7662.8 7805.1 27.182
fit_lcs_openn_agesplit_weak_current 26 7665.8 7798.6 34.187 6.3328
fit_lcs_openn_agesplit_strong_current 30 7665.9 7779.8 42.294 7.8423
Df diff Pr(>Chisq)
fit_lcs_openn_agesplit_config_current
fit_lcs_openn_agesplit_weak_current 2 0.04215 *
fit_lcs_openn_agesplit_strong_current 4 0.09753 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_openn_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = old, b = young)params_agesplit_lcs_openn_current <- broom::tidy(fit_lcs_openn_agesplit_weak_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 "))kable(params_agesplit_lcs_openn_current, digits =3)
term
label
estimate
std.all
statistic
p.value
d_openn_1 ~1
d_int_a
0.041
0.176
1.928
0.054
d_openn_1 ~1
d_int_b
0.082
0.298
4.179
0.000
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_openn_agesplit_strong_current, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ")), digits =3)
Relatively similar change in openness in both groups (slightly stronger change in younger group). LRT indicates no significant group differences in latent change score, however.
7.7.3.3 Ideal personality personality traits
Extraversion (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_extra_agesplit_config_ideal, fit_lcs_extra_agesplit_weak_ideal, fit_lcs_extra_agesplit_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_extra_agesplit_config_ideal 24 7769.2 7911.4 19.640
fit_lcs_extra_agesplit_weak_ideal 26 7765.4 7898.2 19.899 0.2298 2
fit_lcs_extra_agesplit_strong_ideal 30 7767.1 7880.9 29.565 9.8005 4
Pr(>Chisq)
fit_lcs_extra_agesplit_config_ideal
fit_lcs_extra_agesplit_weak_ideal 0.89147
fit_lcs_extra_agesplit_strong_ideal 0.04393 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_extra_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = old, b = young)params_agesplit_lcs_extra_ideal <- broom::tidy(fit_lcs_extra_agesplit_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 "))kable(params_agesplit_lcs_extra_ideal, digits =3)
term
label
estimate
std.all
statistic
p.value
d_extra_1 ~1
d_int_a
-0.042
-0.180
-1.963
0.050
d_extra_1 ~1
d_int_b
-0.002
-0.007
-0.091
0.928
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_extra_agesplit_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_extra_1 ~1 ")), digits =3)
More pronounced change in ideal-personality extraversion in older group. Significant difference in latent change score according to LRT.
Agreeableness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_agree_agesplit_config_ideal, fit_lcs_agree_agesplit_weak_ideal, fit_lcs_agree_agesplit_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_agree_agesplit_config_ideal 24 7296.5 7438.8 36.708
fit_lcs_agree_agesplit_weak_ideal 26 7298.2 7431.0 42.385 5.1777 2
fit_lcs_agree_agesplit_strong_ideal 30 7319.6 7433.4 71.817 28.0309 4
Pr(>Chisq)
fit_lcs_agree_agesplit_config_ideal
fit_lcs_agree_agesplit_weak_ideal 0.07511 .
fit_lcs_agree_agesplit_strong_ideal 1.229e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_agree_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = old, b = young)params_agesplit_lcs_agree_ideal <- broom::tidy(fit_lcs_agree_agesplit_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 "))kable(params_agesplit_lcs_agree_ideal, digits =3)
term
label
estimate
std.all
statistic
p.value
d_agree_1 ~1
d_int_a
-0.013
-0.045
-0.568
0.570
d_agree_1 ~1
d_int_b
-0.013
-0.045
-0.701
0.483
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_agree_agesplit_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_agree_1 ~1 ")), digits =3)
Almost the same change in ideal-personality agreeableness in both groups. LRT indicates some significant difference but this must be because of another parameter (main effect?).
Conscientiousness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_consc_agesplit_config_ideal, fit_lcs_consc_agesplit_weak_ideal, fit_lcs_consc_agesplit_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_consc_agesplit_config_ideal 24 6240.8 6383.1 32.891
fit_lcs_consc_agesplit_weak_ideal 26 6239.2 6372.0 35.345 2.0727 2
fit_lcs_consc_agesplit_strong_ideal 30 6239.8 6353.6 43.898 7.9806 4
Pr(>Chisq)
fit_lcs_consc_agesplit_config_ideal
fit_lcs_consc_agesplit_weak_ideal 0.35474
fit_lcs_consc_agesplit_strong_ideal 0.09229 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_consc_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = old, b = young)params_agesplit_lcs_consc_ideal <- broom::tidy(fit_lcs_consc_agesplit_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 "))kable(params_agesplit_lcs_consc_ideal, digits =3)
term
label
estimate
std.all
statistic
p.value
d_consc_1 ~1
d_int_a
-0.002
-0.006
-0.084
0.933
d_consc_1 ~1
d_int_b
0.012
0.039
0.625
0.532
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_consc_agesplit_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_consc_1 ~1 ")), digits =3)
Very similar change in ideal-personality conscientiousness in both groups. No significant differences according to the LRTs.
Neuroticism (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_neuro_agesplit_config_ideal, fit_lcs_neuro_agesplit_weak_ideal, fit_lcs_neuro_agesplit_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_neuro_agesplit_config_ideal 24 6591.7 6734.0 35.789
fit_lcs_neuro_agesplit_weak_ideal 26 6594.9 6727.7 43.048 4.9346 2
fit_lcs_neuro_agesplit_strong_ideal 30 6600.6 6714.4 56.714 13.4224 4
Pr(>Chisq)
fit_lcs_neuro_agesplit_config_ideal
fit_lcs_neuro_agesplit_weak_ideal 0.084812 .
fit_lcs_neuro_agesplit_strong_ideal 0.009386 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_neuro_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = old, b = young)params_agesplit_lcs_neuro_ideal <- broom::tidy(fit_lcs_neuro_agesplit_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 "))kable(params_agesplit_lcs_neuro_ideal, digits =3)
term
label
estimate
std.all
statistic
p.value
d_neuro_1 ~1
d_int_a
0.047
0.154
1.842
0.065
d_neuro_1 ~1
d_int_b
0.007
0.020
0.316
0.752
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_neuro_agesplit_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_neuro_1 ~1 ")), digits =3)
More pronounced change in ideal-personality neuroticism in older group (but also not significant on its own). Significant difference in latent change score according to LRT.
Openness (ideal personality): results
# model comparison tests for measurement invariancelavTestLRT(fit_lcs_openn_agesplit_config_ideal, fit_lcs_openn_agesplit_weak_ideal, fit_lcs_openn_agesplit_strong_ideal)
Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
lavaan NOTE:
The "Chisq" column contains standard test statistics, not the
robust test that should be reported per model. A robust difference
test is a function of two standard (not robust) statistics.
Df AIC BIC Chisq Chisq diff Df diff
fit_lcs_openn_agesplit_config_ideal 24 7385.6 7527.8 47.160
fit_lcs_openn_agesplit_weak_ideal 26 7381.7 7514.5 47.306 0.1209 2
fit_lcs_openn_agesplit_strong_ideal 30 7385.1 7499.0 58.728 10.8469 4
Pr(>Chisq)
fit_lcs_openn_agesplit_config_ideal
fit_lcs_openn_agesplit_weak_ideal 0.94133
fit_lcs_openn_agesplit_strong_ideal 0.02834 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters # -> key parameter is "d_openn_1 ~1"# labelled parameter as "d_int_a" & "d_int_b" (a = old, b = young)params_agesplit_lcs_openn_ideal <- broom::tidy(fit_lcs_openn_agesplit_weak_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 "))kable(params_agesplit_lcs_openn_ideal, digits =3)
term
label
estimate
std.all
statistic
p.value
d_openn_1 ~1
d_int_a
0.012
0.066
0.817
0.414
d_openn_1 ~1
d_int_b
0.018
0.110
1.477
0.140
# constrained to be equal in the strong measurement invariance model:kable(broom::tidy(fit_lcs_openn_agesplit_strong_ideal, conf.int =TRUE, conf.level =0.999) %>%select(term, label, estimate, std.all, statistic, p.value) %>%filter(term %in%c("d_openn_1 ~1 ")), digits =3)
Similar change in ideal-personality openness in both age groups (slightly stronger in younger group). LRT indicates significant difference (not sure why).
7.7.3.4 Summary of latent main effects split by age group
Somewhat more pronounced changes in current-personality personality in the younger age group, and more pronounced changes in ideal-personality personality in the older age group (see extraversion!). However, a lot of this is only suggestive evidence (at p < .05), is not consistent across all traits, and does not replicate findings from Study 1. Difficult to interpret overall…